C语言中整型的二进制表示

C语言中,正数的原码、反码和补码都是一样的,但是负数的的表示是其补码,补码是反码+1。

int类型是4字节,表示-2^31 ~ 2^31-1

我们设定一个变量60,看它各运算后的结果

60的二进制表示为00000000 00000000 00000000 00111100

~60,我们对60取反,得到这样的二进制11111111 11111111 11111111 11000011

首位的比特位是1,表示这是一个负数,C语言中的负数是补码表示,我们需要讲补码转为原码才知道该二进制在C语言中表示什么编码

补码是反码+1,因此反码为11111111 11111111 11111111 11000010

原码为反码除符号位外其他位求反,因此,原码为10000000 00000000 00000000 00111101,即-61

因此~60 == -61

60 << 2,我们对60左移两位,得到这样的二进制00000000 00000000 00000000 11110000

这是一个符号位为0的二进制,表示的结果为正数,240

文章目录
,