C语言中取反的问题??

来源:百度知道 编辑:UC知道 时间:2024/09/24 13:36:35
a=2
~a为什么等于253?
2的二进制是10吧,10取反是01吧,那应该是1啊.求助!!

我想a应该是字符型吧?

char a=2;
那么a=00000010 (char 单字节)
对a取反
~a=11111101
因为char是无符号型。
那么对无符号数而言,11111101即是253
注意,取反是对整个数位取反,而不是对有效数位取反。

如果a是int型的,int是2字节,16位的
a=0000 0000 0000 0010
~a=1111 1111 1111 1101
结果是~a输出-3(-3的补码是1111 1111 1111 1101)
253不知道是怎么做出来的~

2在二进制中(8位)是00000010
反过来是01000000
=2^6

2为00000010
..