本文目录一览:
-
5、C语言补码作用?
补码,原码,反码什么的。有什么作用啊!
作用如下:
1、补码:解决负数加法运算正负零问题,弥补了反码的不足。
2、原码:可直观反映出数据的大小。
3、反码:解决负数加法运算问题,将减法运算转换为加法运算,从而简化运算规则。
扩展资料
在计算机内,定点数有3种表示法:原码、反码和补码。
所谓原码就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。补码表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加1。
表示方法:
1、原码的表示:在数值前直接加一符号位的表示法。
2、反码的表示:
(1)、正数:正数的反码与原码相同。
(2)、负数:负数的反码,符号位为“1”,数值部分按位取反。
3、补码的表示:
(1)、正数:正数的补码和原码相同。
(2)、负数:负数的补码则是符号位为“1”。并且,这个“1”既是符号位,也是数值位。数值部分按位取反后再在末位(最低位)加1。也就是“反码+1”。
参考资料来源:百度百科:有符号数处理
补码在计算机系统中有什么重要作用
计算机中补码的作用,要从常识中“补数”来理解。
对于钟表,倒拨 3 小时,可以用正拨 9 小时来代替。
对于两位十进制数,共有 100 个数:0~99。
减一,就可以用 +99 代替。
如:28-1 = 27
28 + 99 = (1) 27
忽略 100,结果就相同了。
那么,9 就是-3 的补数、99 就是-1 的补数。
补数,就是用数值较大的正数,代替负数。
利用补数,就可以用加法,代替减法运算。
补码,就是二进制形式的补数。
计算机中八位补码,共有 256 种组合。
那么,负数的补码就是:256 + 这个负数。
那么,数字-1 的补码就是:1111 1111 = 255(十进制)。
同理,数字-2 的补码就是:1111 1110 = 254。
最终,数字-128 的补码就是:1000 0000 = 128。
求补码,并不需要原码反码。
计算机中,根本也没有原码反码。
原码反码,是毫无用处的东西。
用补码代替负数,就可用加法代替减法运算。
计算机中,只要具有加法器,就够用了。
这就可以简化计算机系统的硬件。
计算机表示数的方法为什么有原码、反码、补码三种方法,为什么不用原码简单方便呢?
我不知道为什么,但是我觉得,有几种可能:第一,如果只用原码的话,就有可能出现重码,比如在同一目录下,你建一个名为1的记事本(.TXT)文件,又建了一个名为1的WORD(.doc)文件,虽然你可以通过后缀名来分辨,即使不显示后缀名,你也可以通过所看到的图标来分辨,大家都知道,.TXT和.DOC文件的图标是不一样的。可以计算机他会看吗?那他怎么分辨呢??第二,就是为了防盗,众所周知,现在黑客越来越多,你也不想你的资料泄露吧,退伍泄露,也不想被别人一眼就看出来1就是1,2就是2吧!!
原码,反码,补码各有什么作用呀
正负数,在计算机中存放的格式,就是补码。
计算机中,并没有原码和反码,也就不必关心它们了。
下面,针对补码,给出解释。
比如,有一个小孩,很小的。
他只认识 100 个数(0~99),也不会做减法。
那么,就可以告诉他:“减一”,就用“加 99”算吧。
36 - 1 = 35
36 + 99 = (1) 35
忽略进位的 100,结果不是一样的吗?
那么,就是说:
99,就是-1 的补数。
98,就是-2 的补数。
利用“补数”,就可把“减法”转为“加法”。
利用这个特点,计算机中,仅需一个“加法器”,就够用了。
在计算机中,是以二进制存放各种信息的,统称为:代码。
八位,作为一个计算单位。
范围是:0000 0000 ~ 1111 1111。
写成十进制,就是:0~255。
共有 256 个代码。--这个数字,称为:模。
那么:
1111 1111(255),就是-1 的补码。
1111 1110(254),就是-2 的补码。
1000 0000(128),就是-128 的补码。
求负数的补码,就是这么简单。
而零和正数,直接参加运算即可,用不着求补码。
因此,下面就是补码的定义式。
零和正数的补码: 就是该数字本身。
负数的补码: 就用“模”,加上该负数。
模,就是代码的总个数。
原码和反码,则毫无意义。
所以,在计算机中,并没有它们的存在。
C语言补码作用?
补码主要是为了cpu运算器在进行减法运算时避免借位而设立的。
在早期,cpu中的运算器部分,只要实现一个加法器就可以完成四由算术运算。
因为计算机中的数值编码是有限位数的,所以减法实际上相当于加上减数的补码,而乘法是循环的加法,除法是循环的减法。这种思想在数学上叫转化思想,在兵法上与”借刀杀人“、”借尸还魂“的借是“异曲同工”,用牛顿的话叫做“站在巨人的肩上“。
举例说明,以8位的二进制为例,要计算1-1,只要用1加上-1的补码即可。
-1的原码:1000 0001,最高位是符号为,1表示负数,0表示正数。
-1的反码:1111 1110, 按位取反是除符号位以外,其它每个位上的0变成1,1变成0。
-1的补码:1111 1111,在反码的基础上是加上1即为补码。
1-1 = 1+ 1111 1111 = 1 0000 0000 ,因为只有8位的二进制表示方法,此时溢出了,溢出位在硬件上是没法表示的,因此结果还是0.