百科游戏 手游攻略
大家好,关于什么是补码很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于什么是补码下标的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!
补码是什么意思
补码
用[x]表示机器数(原码),x是真值(二进制)
x=+0.1001,则[x]原=0.1001
x=-0.1001,则[x]原=1.1001
对于0,原码中有“+0”、“-0”之分,故有两种形式:
[+0]原=0.000...0
[-0]原=1.000...0
采用原码表示法简单易懂,但它的最大缺点是加法运算复杂。这是因为,当两数相加时,如果是同号则数值相加;如果是异号,则要进行减法。而在进行减法时还要比较绝对值的大小,然后大数减去小数,最后还要给结果选择符号。
为了解决这些矛盾,人们找到了补码表示法。机器数的补码可由原码得到。如果机器数是正数,则该机器数的补码与原码一样;如果机器数是负数,则该机器数的补码是对它的原码(除符号位外)各位取反,并在未位加1而得到的。
负数用补码表示时,可以把减法转化为加法。这样,在计算机中实现起来就比较方便
[x]补={x1>x≥0
{2+x=2-|x|0≥x≥-1
x=+0.1011,则[x]补=0.1011
x=-0.1011,则[x]补=10+x=10.0000-0.1011=1.0101
对于0,[+0]补=[-0]补=0.0000(mod2)
例子中是以定点小数为例。
补码的原理可以用钟表来描述
如设标准时间为4点正;一只表已经7点了,为了校准时间,可以采用两种方法:一是将时针退7-4=3格;一是将时针向前拨12-3=9格。即7-3和7+9(mod12)等价,因此,把负数用补码表示的mod2操作,可以把减法转化为加法。
什么叫做补码
补码,应该是最容易理解的知识了。
小学生都可以自己摸索出来。
按照四位二进制来说,共有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的范围,结果将是错的。
这种现象称为“溢出”。
再注意一下:进位,并不等于溢出。
---------
因为补码的这个特性,所以,在计算机中,只是使用补码存放数据。
而原码反码,在计算机中,都是不存在的。
原码反码的用途,只是用于“笔算”。
其实,笔算的方法,并非只有“取反加一”。
原码反码,只是砖家为了增加收入,瞎编的垃圾而已。
所以,大家,完全不必在原码反码上浪费时间精力。
但是,考试怎么办?
呃...,千万别跟老师较劲,他怎么讲,你就怎么答吧。
计算机补码是什么
1在计算机系统中,数值一律用补码来表示(存储).使用补码,可以将符号位和其他位统一处理;同时,减法也可按加法来处理.另外,两个用补码表示的数据相加时候,如果最高位(符号位)有进位,则进位被舍弃.
2补码与原码的转换过程几乎是相同的数值的补码表示也分两种情况:
(1)正数的补码:与原码相同.例如,+9的补码是00001001
(2)负数的补码:符号位为1,其余位为该数绝对值的原码按位取反;然后整个数加1例如,-7的补码:因为是负数,则符号位为“1”,整个为10000111;其余7位为-7的绝对值+7的原码0000111按位取反为1111000;再加1,所以-7的补码是11111001.已知一个数的补码,求原码的操作分两种情况:
(1)如果补码的符号位为“0”,表示是一个正数,所以补码就是该数的原码.
(2)如果补码的符号位为“1”,表示是一个负数,求原码的操作可以是:符号位为1,其余各位取反,然后再整个数加1.
例如,已知一个补码为11111001,则原码是10000111(-7):
因为符号位为“1”,表示是一个负数,所以该位不变,仍为“1”;
其余7位1111001取反后为0000110;再加1,所以是10000111.
在“闲扯原码、反码、补码”文件中,
没有提到一个很重要的概念“模”.
我在这里稍微介绍一下“模”的概念:“模”是指一个计量系统的计数范围.如时钟等.计算机也可以看成一个计量机器,它也有一个计量范围,即都存在一个“模”.
例如:时钟的计量范围是0~11,模=12.表示n位的计算机计量范围是0~2^n-1,模=2^n.
【注:n表示指数】“模”实质上是计量器产生“溢出”的量,它的值在计量器上表示不出来,计量器上只能表示出模的余数.任何有模的计量器,均可化减法为加法运算.
例如:假设当前时针指向10点,而准确时间是6点,调整时间可有以下两种拨法:
一种是倒拨4小时,即:10-4=6
另一种是顺拨8小时:10+8=12+6=6
在以12模的系统中,加8和减4效果是一样的,因此凡是减4运算,都可以用加8来代替.对“模”而言,8和4互为补数.实际上以12模的系统中,11和1,10和2,9和3,7和5,6和6都有这个特性.
共同的特点是两者相加等于模,对于计算机,其概念和方法完全一样,n位计算机,设n=8,所能表示的最大数是11111111,若再加1称为100000000(9位),但因只有8位,最高位1自然丢失.又回了00000000,所以8位二进制系统的模为2^8.在这样的系统中减法问题也可以化成加法问题,只需把减数用相应的补数表示就可以了.把补数用到计算机对数的处理上,就是补码.
文章到此结束,如果本次分享的什么是补码和什么是补码下标的问题解决了您的问题,那么我们由衷的感到高兴!
- 最近发表