负数的二进制怎么表示?
首先我们得知道三个码:原码,反码,补码。
原码:一个整数,按照绝对值大小转换成的二进制数。
反码:将二进制数按位取反,所得的新二进制数称为原二进制数的反码。
补码:反码加1称为补码。
以100为例:(十进制100——二进制1100100)
int 类型占4个字节,32位,我们写成:
原码:00000000 00000000 00000000 01100100
反码:11111111 11111111 11111111 10011011
补码:11111111 11111111 11111111 10011100
负数的二进制数就是其正数原码的补码。
负100的二进制数就是正100原码的补码,即:11111111 11111111 11111111 10011100。
print(bin(100)) # 运行结果:0b1100100
print(bin(-100)) # 运行结果:-0b1100100
print(bin(-100 & 0xffffffff)) # 运行结果:0b11111111111111111111111110011100
使用bin()函数查看二进制数时:当参数是正数时输出正数的原码,当参数是负数时,只能输出负号加对应正数的原码。
在二进制码中,采用最高位(最左边的)是符号位的方法来区分正负数,符号位为0表示正数,1表示负数。
正100的二进制数的最左边的符号位是 0,负100的二进制数的最左边的符号位是 1。