人生倒计时
- 今日已经过去小时
- 这周已经过去天
- 本月已经过去天
- 今年已经过去个月
计算机中什么叫补码啊``` 怎么算的?
补码,在计算机中,有所应用。
但是,补码的来源,是由算法导出的,和计算机无关。
比如,一个小孩,很小的。
他只认识 100 个数,也不会做减法。
那么,减一,就可以告诉他,用加 99 代替:
36 - 1 = 35
36 + 99 = (1) 35
忽略进位,结果不是一样的吗?
99,就是-1 的补数。
算法: 补数=模+负数。
其中的“模”,是计数系统中,数字个数的总数。
补码,也就是二进制的补数。
八位二进制,共有 256 个数字,模,就是 256。
255(1111 1111),就是-1 的补码;
254(1111 1110),就是-2 的补码;
... ...
128(1000 0000),就是-128 的补码。
算法:
补码=256 +负数。
正数,直接参加运算即可,用不着转换。
什么叫做补码?
补码,应该是最容易理解的知识了。
小学生都可以自己摸索出来。
按照四位二进制来说,共有 16 组代码。
数字 0 的二进制,就是 0000,
数字 1 的二进制,就是 0001,
。。。
数字 7 的二进制,就是 0111。
可见下表:
零和正数的补码
负数怎么办?
就从 0000,依次向下减,就行了。那么:
数字-1 的二进制,就是 0000-1 = (1) 1111 = 15(十进制)。
(括号中的 1,是借位,舍弃不要了。)
数字-2 的二进制,就是 1111-1 = 1110 = 14。
数字-3 的二进制,就是 1110-1 = 1101 = 13。
。。。
数字-8 的二进制,就是 1000 = 8(十进制)。
(别再减了。再减,就是 0111 = +7 了。)
可见下表:
负数的补码
综合到一起,就是-8~+7 的四位补码。见下表:
四位补码
总结:
零和正数的补码,就是数字本身(也可转为二进制)。
负数的补码,就是: 16+这个负数。
(如果是 8 位二进制,就改用: 256 + 这个负数。)
--------
整个推算过程,并不需要使用“原码反码符号位”这些垃圾。
计算时,使用十进制,简单方便。得出的补码,当然也是十进制。
如果需要二进制,就变换一下。
补码,很难吗?
如果不涉及原码反码符号位,就一点也不难。
-----------
补码有什么用呢?
利用补码,可以把减法运算,转换成加法。
(所以,在计算机中,有一个加法器,就够用了。)
例如:6-2 = 4,用补码运算如下:
6 的补码是 0110、-2 的补码是 1110。
0110 + 1110 = (1) 0100 (= 4 的补码)
(括号中的 1,是进位,舍弃不要了。)
注意:
如果运算结果超出了-8~+7 的范围,结果将是错的。
这种现象称为“溢出”。
再注意一下:进位,并不等于溢出。
---------
因为补码的这个特性,所以,在计算机中,只是使用补码存放数据。
而原码反码,在计算机中,都是不存在的。
原码反码 的用途,只是用于“笔算”。
其实,笔算的方法,并非只有“取反加一”。
原码反码,只是砖家为了增加收入,瞎编的垃圾而已。
所以,大家,完全不必在原码反码 上浪费时间精力。
但是,考试怎么办?
呃 ...,千万别跟老师较劲,他怎么讲,你就怎么答吧。
什么是补码
正负数字,存放在计算机中,就称为:补码。
正数,就直接以二进制存放。
负数,则需要变换一下,再存放。
--------------
如果,仅使用两位十进制数,就是 00~99,共有 100 个数字。
减一,就可以用 +99 代替:
28 - 1 = 27
28 + 99 = (1) 27
忽略进位,结果就是相同的。
于是,99,就是-1 的补数;
同理,98,就是-1 的补数;
利用【补数】,就可把“相减”运算,改为“相加”。
利用【补数】,就可把“负数”改为“正数”。
对于“-1”,其对应的【补数】就是:100-1 = 99。
-------------
计算机中,没有数字。1 和 0,都是代码。
八位二进制代码,称为一个字节。
0000 0000~1111 1111,共有 256 个代码。
-1,就可以用 256- 1 = 255 (=1111 1111) 代替,
-2,就可以用 256- 2 = 254 (=1111 1110) 代替,
那么,1111 1111 就称为-1 的补码;
同理,1111 1110 也就是-2 的补码。
-------------
计算机中,只有加法器,没有减法器。
做减法运算,必须使用【补码】,用加法来操作。
补码的定义式,如下:
正数的补码,就是该数字本身。
负数的补码,就用“模”,加上该负数,即可。
求补码,并不需要“原码反码符号位 ”这些垃圾知识。
补码是什么请回答好吗
补码,就是二进制的补数。
什么是补数? 通过常识,就可以理解了。
时钟,倒拨 3 小时,可用 正拨 9 小时 代替。
两位十进制数:00~99,共有 100 个。
那么,减一,可用 +99 代替。
24-1 = 23
24 + 99 = (1) 23
忽略进位,只取低两位,结果就是一样的。
那么,-1 的补数,就是 99。
同理,-2 的补数,就是 98。
。。。
利用补数,就可以把减法转化为加法运算。
--------
计算机用二进制,“补数”就改称为“补码”了。
八位二进制数:0000 0000~1111 1111,共有 256 个。
那么,减一,可用加 1111 1111 代替。
因此,-1 的补码,就是 1111 1111 = 255(十进制)。
同理,-2 的补码,就是 1111 1110 = 254(十进制)。
。。。
最后,-128 的补码,就是 1000 0000 = 128(十进制)。
--------
求负数的补码,公式就是:2 的 N 次方+该负数。
可以用十进制来计算,不用写成二进制。
补码是什么意思?
1
补码
注意:此处的'=='是相等的意思。'='是赋值的意思。
在机器世界里:
正数的最高位是符号位0,负数的最高位是符号位1。
对于正数:反码==补码==原码。
对于负数:反码==除符号位以外的各位取反。
补码==反码+1.
原码==补码-1后的反码==补码的反码+1。(读完本文后,应该能够直观地认识到本式的正确性)
可以轻易发现如下规律:
自然计算 :a-b==c.
计算机计算:a-b==a+b的补码==d.
c的补码是d.
通过此法,可以把减法运算转换为加法运算。
所以补码的设计目的是:
1.使符号位能与有效值部分一起参加运算,从而简化运算规则.
2.减运算转换为加运算,进一步简化计算机中运算器的线路设计.