计算机基础:原码、补码、反码

最近工作中用到了,补码的概念,发现这些概念脑子里全糊了

翻出书简单复习一下,归纳如下:

首先我们讨论的都是有符号数,第一位都是符号位 正0 负1

原码:

最简单明了

x=+1101    [x原码]=0,1101

x=-1101     [x原码]=1,1101


这里注意下原码0有两种表示法

+0原码:0,0

-0原码:1,0


补码:

为什么要有补码呢:

因为原码再做加减运算的时候,如果两个数符号不同,要先判断两个数绝对值大小,然后将绝对值大的数减去绝对值小的数

结果的符号以绝对值大的数位准。

所以要找一个与负数等价的正数来代替负数,就可以把减法计算用加法代替

于是出现了补码。这个补数的概念一定要理解


一个例子:



那么上面的例子是对于12进制,我们来看看2进制是怎么算补码:

①:对于原码是正数的情况,补码等于原码。

②:原码为负数求补码,那么首先得用到它的模,直接让此数加上模就可以得到它的对应的正数。

那模等于什么呢?


对于二进制数来说,有分整数和小数

比如+11十进制为+3;

比如+0.11十进制为+0.75:


整数的模是2的n次幂,n为包含符号位的个数;


例子:求-1101的补码:

模是2的5次方:100000

补码为:x+模=-1101+100000=10011,第一位为符号位,所以结果为-


小数的模为2

例子:求-0.0110的补码:

补码为:x+模 = -0.0110+10.0000=1.1010第一位为符号位,所以结果为-


这种方法求补码有点麻烦,但是要明白计算

比较快的得出补码是如下口诀


(这里要注意,以上求补码的方法都是对于负数来说的,对于正数,补码就等于原码)

用这个方法再求刚才的例子:

例子:求-1101的补码:

第一步要先求出原码:

原码:1,1101

补码用以上口诀:1,0011


例子:求-0.0110的补码:

原码为:1.0110

补码为:1.1010


这里还要注意:

对于补码要注意0只有一种表示


那补码多出来的1.0表示什么呢?

我们看第一位是符号位说明是个负数,但是上面也说了-0的补码和+0都是0.0

那我们来看看,对于-1,求它的补码是什么

[x]+模=-1.0+10.0=1.0

所以说1.0表示的是-1

可以理解成1.0表示小数补码的最小值-1(我们这里将-1作为小数)


同理对于补码1,00(注意这里是讨论整数,分割用的是逗号,说明这不是一个小数)

它表示的是-4(-100)

证:-100+1000=100(第一位作为符号位:1,00)


所以我们可以类推:

1,0 表示 -2

1,00表示 -4

1,000表示 -8


归类如下:

对于补码如果第一位符号位是1,后面全是0的情况

如果是小数,及1.0 表示 -1

如果是整数,及1,0 或者 1,00 或者 1,000 。。。。。表示 负的 2 的n次方(n表示0的个数)


3.反码:

反码只需要记住一句话:

如果原码为正数,反码等于原码,如果原码为负数,反码为原码基础上除了符号位,每位取反:

x=+0.0110时,原码为0.0110,反码为0.0110(正数)

X=-0.0110时,原码为1.0110,反码为1.1001(负数)


我们还要注意到 对于反码 0有两种表示方式


,

我们来归纳一下:


  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值