关于数电的65535和-1的换算

来源:百度知道 编辑:UC知道 时间:2024/06/22 15:23:39
在计算器上为什么65535换成二进制和-1换成二进制的结果是一样的,都是1111 1111 1111 1111?

因为在二进制里你选的是”单字“,所以就按”单字“的位数处理。

字节是8位的,也就是二进制表示时最多可以8位的0或1。
单字是16位,2个字节。
双子32位,4个字节。

计算机里的负数用补数表示。
就是把正数的二进制,各位取反,0变1,1变0,然后再加1。
正数和0的补数就是它本身。

比如-1,就是1的二进制,实际上要把位数考虑进去,
如果是单字,16位,要把前面的0写上,再取反。
即1=0000 0000 0000 0001
-1=1111 1111 1111 1110 + 1=1111 1111 1111 1111
所以就是你看到的那样了。

这就是计算机里有符号的整数的表示方法。
用整数二进制的第一位作符号位,0为正整数或者0,1为负整数,用补数表示。

8位无符号整数从0000 0000 到1111 1111,可以表示0到2^8-1=255,一共256个数。
8位有符号整数
从0000 0000到0111 1111为0和正数,即0到2^7-1
从1000 0000到1111 1111为负数,即-2^7到-1
所以一共可以表示-2^7到2^7-1,即-128到127,也是一共256个数。

同理,
32位无符号整数范围为0到2^32-1,有符号整数范围为-2^31到2^31-1

溢出

因为二进制在计算器上是以补码形式存储的。正数的原码等于补码,而负数的补码得经过原码取反再加1得到,-1的原码与1的原码相同为0000 0000 0000 0001
取反后为1111 1111 1111 1110,最后再加1就得到1111 1111 1111 1111,理论上讲65535已经超出16位二进制数的表示范围了,如果不考虑符号的话才可以这样表示