按位取反

int a=3;    ~a=-4

3的二进制是011,第一位的0是符号位,按位取反为100,符号位为1,数字位为00,因为这是个负数要转换成补码,00的补码为100,再加上前面那个符号位1,最后得1100,十进制为-4。 

计算补码有两个办法:

  1、按位取反再加1

    00-->11-->100

  2、用高位1减去这个数

    100-00=100

posted @ 2021-01-22 19:34  大牛等等我  阅读(1137)  评论(0编辑  收藏  举报