通识基础_正负数二进制的表示

时间:2021-03-10 03:38:38

用byte举例,一个字节,8个二进制位


1.无符号数表示范围为0----------255

最大为11111111,1*2^7+1*2^6+1*2^5+1*2^4+1*2^3+1*2^2+1*2^1+1*2^0=255

最小为00000000,0*2^7+0*2^6+0*2^5+0*2^4+0*2^3+0*2^2+0*2^1+0*2^0=0


2.有符号数表示范围为-128-----0-----127

有符号数第一位表示符号,0表示正数,1表示负数

最大为01111111,1*2^6+1*2^5+1*2^4+1*2^3+1*2^2+1*2^1+1*2^0=127

以下注意!负数的二进制表示如下:

二进制值(1字节)

十进制值 

10000000

-128 

10000001

 -127 

10000010

-126 

10000011

 -125 

……

……

11111110

-2 

11111111

-1


从-1到-128,其二进制的最高位都是1,因为负数最高为为1
然后1000 0000 并没有拿来表示 -0,而1000 0001也不是拿来直观地表示-1。事实上,-1 用1111 1111来表示。 

为什么?

-1大还是-128大? 

当然是 -1 大。-1是最大的负整数。以此对应,计算机中无论是字符类型,或者是整数类型,也无论这个整数是几个字节。它都用全1来表示 -1。比如一个字节的数值中:1111 1111表示-1,那么,1111 1111 - 1 是什么呢?和现实中的计算结果完全一致。1111 1111 - 1 = 1111 1110,而1111 1110就是-2。这样一直减下去,当减到只剩最高位用于表示符号的1以外,其它低位全为0时,就是最小的负值了,在一字节中,最小的负值是1000 0000,也就是-128。 

我们以-1为例,来看看不同字节数的负整数中,如何表达-1这个数: 

字节数

二进制值

 十进制值 

单字节数

11111111

 -1 

双字节数

 11111111 11111111

 -1 

四字节数

11111111 11111111 11111111 11111111

 -1