计算机为什么使用补码

补码

朋友们对补码的计算应该是相当熟悉,但大家有没有思考过一个问题,补码是在什么情况下创造出来的呢?

为回答这一问题,我们先来看一个生活中的例子:

大家都见过时钟吧,时钟转一轮是12小时,从2点转到6点,顺时针转动的话需要4个小时,但假如我让时钟倒着转8个小时是不是也能转到6点。


那么有意思的来了

在时钟这12个数中 2 + 4 = 6, 2 - 8 = 6

那么我们就可以将减法转换成加法

聪明的朋友应该已经明白了,补码的作用就是将减法转化成加法


清楚补码的作用后,我们接着分析, -8 是如何变成 +4 的呢

在时钟中,一共有12个数,从1走到12再接着走会怎么样?没错,会变成1

为了方便大家用计算机的方式理解

我们把时钟改成从0 到 11

0 ;1……11;0;1

0 模 12 = 0; 1 模 12 = 1; …… ;12 模 12 = 0;13 模 12 = 1;

走到最大之后又回到了原处!

是不是有循环队列内味了,没错,就是模

补码就是的计算就是通过 **模 - X **得到的

这样我们就可以得到 4 = 12 - 8


在计算机的世界中,负数补码是通过原码先求反码再+1得到的

例如我们用三位表示

一共能表示出8个数

000 001 010 011 100 101 110 111

八个数,那么模就是 8 也就是二进制的 1000

假如我们将 -010 转化为加法

我们用1000 - 010 = 0110

我们知道反码 + 原码 就是当前位的最大值

010 的反码是 101

010 + 101 = 111(三位中表示的最大值)

现在我们再来观察原码取反+1这个式子

反码是 最大值 - 原码

我们调换一下顺序

最大值 + 1 - 原码

即 模 - 原码

是不是回到了最初的那个式子

我们继续把上述算完, 111 - 010 + 1 = 110

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值