C语言中取反的问题??

Python014

C语言中取反的问题??,第1张

我想a应该是字符型吧?

char

a=2

那么a=00000010

(char

单字节)

对a取反

~a=11111101

因为char是无符号型。

那么对无符号数而言,11111101即是253

注意,取反是对整个数位取反,而不是对有效数位取反。

按位操作是对二进制的某位进行

比如要对低位进行取反,则应当计算a^=1而(1<<(1-1))=1,a^=(1<<(n-1))成立

要对第2位进行取反,则应当计算a^=2而(1<<(2-1))=1<<1=2,a^=(1<<(n-1))成立

依此类推使用a^=(1<<(n-1))均成立

一般来说,数据最低位被标称为第0位,所以这个语句可以写成a^=(1<<n)//n的取值从0开始