这学期开了一门《微型计算机原理与接口技术》,老师在第一节课讲了一点原码、反码和补码的内容。留了两个小问题给我们课后完成:在8字节下,(1)原码、反码和补码的表示范围是多少 ? (2)0有几种表示方式?

在上网查了一些资料后,我对此有了一些认识,现决定记录下来。初次写技术博客,如有不妥,还请多多包涵。

真值数和机器数

真值数就是用符号'+' '-'表示的数,机器数就是把真值数的'+'改为0,把'-'改为1。

原码

原码就是把真值数的'+'改为0,把'-'改为1。

真值数范围是:[-111 1111,+111 1111]      即[-127,127]

原码表示范围是:[1111 1111,0111 1111]

反码

反码就是为正的真值数还是把'+'改为0,为负的真值数把'-'改为1,负号后面对应的正数(的原码)按位取反(即0换成1,1换成0)。

真值数范围是:[-111 1111,+111 1111]      即[-127,127]

反码表示范围是:[1000 0000,0111 1111]

补码

补码就是为正的真值数还是把'+'改为0,为负的真值数把'-'改为1,负号后面对应的正数(的原码)按位取反(即0换成1,1换成0),再在末位加1。

真值数范围是:[-1000 0000,+111 1111]      即[-128,127]

补码表示范围是:[1000 0000,0111 1111]    #注释:-128的机器数原码实际是:1 1000 0000,反码1 0111 1111,补码1 1000 0000,截取低8位即1000 0000,表示的是一个负数。

0的几种表示方式

真值数:+0 = +000 0000  =  0000 0000(原码)=  0000 0000(反码)=  0000 0000(补码)

真值数: -0 =  -000 0000  =  1000 0000(原码)=  1111 1111(反码) #注释:补码没有-0,或者说-0和+0的补码相同

0 = 1 - 1 = 1 +(-1)=[0000 0001]原 + [1000 0001]原 = [0000 0001]反 + [1111 1110]反 = [1111 1111]反 = [1000 0000]原 = -0

0 = 1 - 1 = 1 +(-1)=[0000 0001]原 + [1000 0001]原 = [0000 0001]补 + [1111 1111]补 = [0000 0000]补 = [0000 0000]原 = +0

版权声明:本文为博主原创文章,未经博主允许不得转载。