天天看点

位运算 按位取反是怎么算出来的

vim te.c

# include <stdio.h>

int main(void)

{

        int i = 0;

        for(i=0;i<10;i++)

        {

                printf("\t~%d : %d\n",i,~i);

        }

        return 0;

}

——————

gcc te.c

./a.out

        ~0 : -1

        ~1 : -2

        ~2 : -3

        ~3 : -4

        ~4 : -5

        ~5 : -6

        ~6 : -7

        ~7 : -8

        ~8 : -9

        ~9 : -10

___________________________________

1. 3的反码

数字: 3

二进制表示(正数的反码等于原码):

    0000 0011

取反

    1111 1100

取原码(上面是反码表示):首位不变,取反码,末尾加1。

    1000 0100

数字:3 取反 即为: -4

2. 7的反码

数字: 7

二进制表示(反码):

    0000 0111

    1111 1000

    1000 1000

数字:3 取反 即为: -8

继续阅读