8位二进制表示数的范围为什么是-128~127
8位原码能够表示数的范围是 -127~127
8位反码能够表示数的范围是 -127~127
8位补码能够表示数的范围是 -128~127
既然范围是-128~127,那肯定是用补码表示的。
计算机没有你想象的那么聪明,能够自觉的对正数和负数进行区分和识别,所以我们人类就给他们制定了一系列规则:
我们把最高位规定为符号位,1为负,0为正;
1000 0000——1111 1111表示-128到-1, 0000 0000——0111 1111表示0-127;
例如:
已知补码1111 1111——>原码1000 0001,反码1111 1110;
负数补码——>>原码计算规则:
看到最高位为1,一个负数,
把符号位去掉,剩下0111 1111,然后减1得到0111 1110,再取反得到原码1000 0001;
负数补码——>>反码计算规则:
看到最高位为1,一个负数,反码=补码-1,所以得到反码 1111 1110;
若为0表示正数,补码=原码=反码,算都不用算的;
所以说补码就是二进制里表示负数的一种方法,对正数求原码、反码、补码没什么意义;
正数的原码反码补码是一样的.
补码的表示范围为:
(-128~0~127)共256个.
注意: (-128)没有相对应的原码和反码。-128——>(1000 0000)
摘自:http://xuyanzhi6688.blog.163.com/blog/static/2920588920119119322015/
其实主要就是-128怎么来的不明白
在有符号二进制中,0有两种表示方法,00000000(+0)、10000000(-0)
但在数学中0是不分正负的,所以用+0来表示0,这时候-0就没有用了
多出来的不要浪费,所以人为规定他来表示-128,这是人为规定的,正常方式计算不出来
为什么要这样规定呢,也是有一定原因的
8位二进制最多表示127,再加一就溢出,成为了0,也就是127+1=0
127+1正常运算应该是128,所以就可以理解为128=0
这里就像是钟表一样,晚上12点也是0点,也就是12=0
因为00000000(+0)用来表示0了,所以10000000(-0)就可以用来表示-128(人为规定)
8 位二进制表示数的范围为什么是 -128~127?
应该说:
8 位二进制补码,代表数字的范围是 -128~127。
其中,0 的补码是 0000 0000。
+1 的补码,就是 0000 0001。
+2 的补码,就是 0000 0010。
... ...
+127 的补码,就是 0111 1111。
---------
负数,你从 0000 0000 递减就行了。
-1 的补码,就是 0000 0000-1 = 1111 1111(=255)。
-2 的补码,就是 1111 1110(=254)。
... ...
-128 的补码,就是 1000 0000(=128)。
不能再减了。 再减,就是 0111 1111(=+127) 了。
---------
最小-128,最大+127,就是这么来的。
---------
负数补码的计算公式:256+该负数。
求补码,可用十进制计算。需要二进制,你就再转换一下。
求补码,并不需要原码反码,计算机中,也不保存原码反码。