这学期开了一门《微型计算机原理与接口技术》,老师在第一节课讲了一点原码、反码和补码的内容。留了两个小问题给我们课后完成:在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
版权声明:本文为博主原创文章,未经博主允许不得转载。