若8位字长补码16位,补码(fffe)16对应的有符号位数是

计算机中的信息都是以二进制形式表示的数值有正负之分,计算机就用一个数的最高位存放符号(0为正1为负)。这就是机器数的原码了设机器能处理的位数为8。即8位字長补码为1byte原码能表示数值的范围为(-127~-0 + 0~127)共256个。

有了数值的表示方法就可以对数进行算术运算但是很快就发现用带符号位的原码进行乘除运算时结果正确,而在加减运算的时候就出现了问题如下(假设8位字长补码为8bits):

问题出现在+0和-0上,在人们的计算概念中零是没有正负之分的於是就引入了补码概念。 负数的补码就是对反码加一而正数不变,正数的原码反码补码是一样的在补码中用(-128)代替了(-0),所以补码的表示范围为:(-128~0~127)共256个

原码、反码、补码都是有符号定点数的表示方法(日常生活中通常都使用有符号数,定点数对应的就是浮点数即小数),反码、补码是为了简化二进制数的减法运算;
移码常用来比较大小一般会把浮点数的阶码用移码表示,说的再通俗一点你把数值用移碼表示出来可以一眼看出他们的大小。这样很容易判断阶码的大小移码可用于简化浮点数的乘除法运算。

反码:解决负数加法运算问题将减法运算转换为加法运算,从而简化运算规则;
补码:解决负数加法运算正负零问题弥补了反码的不足。
总之反码与补码都是为叻解决负数运算问题,跟正数没关系因此,不管是正整数还是正小数原码,反码补码都全部相同。

1、正数的原码、补码、反码均为其本身;
2、负数(二进制)的原码、补码、反码公式:
反码 = 原码(除符号位外)每位取反
移码 = 补码符号位取反

有一道关于补码运算的问题,若[X]补=CCH,機器8位字长补码问8位,则[X/2]补=多少,它的答案是E6H,但我算出来是E7H,我不知道怎么回事,我的计算步骤是把X算出来,X=50,那么[X/2]补是E7H,请哪个为什么我算错的告诉我,請把过程说出来,讲的详细一点,在这里先谢谢了!
你怎么和答案说的一样啊,为什么右移后符号位不变呢,是不是因为X是个负数啊,如果是的话,那么峩死算,把X算出来,再把它变为补码也应该对啊,为什么我算出来是E7啊?x/2就是表示X除以2吗,还是表示X右移一位呢?
8位(包括1位符号位)的定点数,若鼡补码表示,-1的补码在定点小数和定点整数的表示分别是__和__

我要回帖

更多关于 8位字长补码 的文章

 

随机推荐