计算机是如何做减法的?

算机只会加法,不会减法,乘法,除法等等等等。首先,在生活中,自然数是没有限制的,从1到无数,你想说多少就说多少。但是在计算机里,数字不能是无限大,因为保存数字需要空间,就好比在一张纸上,可以写出的数字也是有限的一样。然而这既是缺点,也是优点,这个缺点在计算机的世界里被发扬光大,成了优点。

钟表就是现实生活中的一个例子。24点过后,又是1点。没有25点。25点就是第二天的1点。25点就是 24 + 1点。因为钟表只能容纳24个数,当数到25的时候,24会向前进位,只留下1。如图:24点挂钟

 

如果不是很好理解的话,可以想象,我的表只有0点到9点,这样的话,5 + 8 = 13,但是“10”被进位,只留下了3。这样,我们就说,前面的“10”因“溢出”而丢失。如图:

 


从图中可以看  5点加8小时是3点。  5点减去2小时,也是3点

 

所以,想要计算5 - 2,只要计算 5 + 8就可以了。

5 - 2  = 3; 5 + 8 = 13 (个位相等)

6 - 5 = 1;  6 + 5 = 11 (个位相等)

9 - 3 = 6; 9 + 7 = 16 (个位相等)

通过上面的几个等式发现,减一个数,就是加这个数的补数,然后高位被溢出,剩下的就是结果了。至于高位是哪一位,就要看你的计算的容量了。

补数是一个数合起来等于10/100/1000/... 的那个数。

10的补数是0,

5的补数是5,95,995,……

31的补数是79,969,……

等等。

 

那计算几又是如何计算补数的呢?2进制是计算机的本性,没有1234567890,而只有 1 和 0,逢2进1。

 

按照刚才10进制的规则,相加等于2/4/8/16/32/64/……的数,就是补数。为了方便计算,我们假定计算机只有4位,就是最大只能表示15(1111B)。也就是用16来计算数字的补数。这样一来,

 

 

9 (1001)5(0101)13(1101)
求补数16 -  9 = 1216 - 5 = 1116 - 13 = 3
补数12(0111)11(1011)3(0011)
数取反011010100010

 

于是,你可以总结一个规律,2进制的补数,就是每一位取反,最后加1就可以了。

比如

13 → 1101 → 取反→ 0010 → +1 → 0011→ 3

3 → 0011 → 取反 → 1100 → +1 → 1101 → 13

 

计算 8 - 3 这个运算的时候,就是 8 + (8的补数),这样:

1000 - 0011 = 1000 + (1100 + 1) = 10101。

只有4位,前面的1被溢出,只剩下 0101( 5)

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值