二进制原码、反码、补码、最大值、最小值

计算机 二进制

符号位

最高位代表符号位,0表示正数,1表示负数;000... 为正数,100... 为负数 ,   000...000表示0

原码、反码、补码

原码:其本身。

反码:正数的反码与原码一致,负数的反码对原码按位取反,符号位不变。

补码:正数的补码是其本身,负数的补码是反码加1,符号位不变。

5:0000 0101(原码);0000 0101(反码);0000 0101(补码)

-5:1000 0101(原码);1111 1010(反码);1111 1011(补码)

计算机中存储数据是采取 补码的方式进行存储的,

为什么采用补码存储的方式呢

可以使符号位也参与计算;使 减法 变成 加法计算;使0的表示只有一种

以原码存储:

1(0000 0001)+(-2(1000 0010)),无法直接计算,

以反码存储:1

1(0000 0001)+(-2(1111 1101)) =(-1) 1111 1110

1(0000 0001)+(-1(1111 1110)) = (-0)1111 1111,原码为1000 0000,

则此时0的表示形式有两种,-0:1000 0000,+0:0000 0000

以补码计算:

1(0000 0001)+(-2(1111 1110)) = -1(1111 1111),原码为1000 0001

1(0000 0001)+(-1(1111 1111)) = 0 (0000 0000),溢出的最高位忽略,而原来的1000 0000则用来表示最小值

最大值与最小值

对于有n位的二进制数,其最大值 为 2n,最小值为-2n

byte:1字节,1byte = 8bit,其二进制数共8位,即 0000 0000,最大值是27-1,最小值为-27

int:4字节,4byte = 32bit,其位数为32 位,最大值是231-1,最小值为-232

最大值

以8位计算:0111 1111

公式一:S = 26+25+24+23+22+21+20

两边同乘以2

公式二:2S =27+ 26+25+24+23+22+21

公式二 减去 公式一,等于 S = 27-20=27-1

最小值

8位的最大值为27-1( 0111 1111),其绝对值的负数为 -27+1(1000 0001),再减去1,

-27+1(1000 0001)+(-1(1111 1111))=(-27)1000 0000,则用1000 0000表示最小值,因为原来是表示0(以反码计算时)的,其原码是0000 0000,很显然是不对的,所以最小值是没有原码的;

最大值 (0111 1111)= 最小值(1000 0000)+(-1)(1111 1111)

最小值(1000 0000) = 最大值(0111 1111)+1 (0000 0001)

posted @ 2022-09-15 16:59  水映苑  阅读(2257)  评论(0编辑  收藏  举报