永发信息网

二进制转化负数问题

答案:2  悬赏:0  手机版
解决时间 2021-11-20 06:34
  • 提问者网友:雾里闻花香
  • 2021-11-19 12:53
二进制转化负数问题
最佳答案
  • 五星知识达人网友:不如潦草
  • 2021-11-19 13:19
1.原码
正数的符号位为0,负数的符号位为1,其它位按照一般的方法来表示数的绝对值.用这样的表示方法得到的就是数的原码.
【例2.13】当机器字长为8位二进制数时:
X=+1011011 [X]原码=01011011
Y=+1011011 [Y]原码=11011011
[+1]原码=00000001 [-1]原码=10000001
[+127]原码=01111111 [-127]原码=11111111
原码表示的整数范围是:
-(2n-1-1)~+(2n-1-1),其中n为机器字长.
则:8位二进制原码表示的整数范围是-127~+127
16位二进制原码表示的整数范围是-32767~+32767

2.反码
对于一个带符号的数来说,正数的反码与其原码相同,负数的反码为其原码除符号位以外的各位按位取反.
【例2.14】当机器字长为8位二进制数时:
X=+1011011 [X]原码=01011011 [X]反码=01011011
Y=-1011011 [Y]原码=11011011 [Y]反码=10100100
[+1]反码=00000001 [-1]反码=11111110
[+127]反码=01111111 [-127]反码=10000000
负数的反码与负数的原码有很大的区别,反码通常用作求补码过程中的中间形式.
反码表示的整数范围与原码相同.

3.补码
正数的补码与其原码相同,负数的补码为其反码在最低位加1.
【例2.15】(1)X=+1011011 (2) Y=-1011011
(1)根据定义有: [X]原码=01011011 [X]补码=01011011
(2) 根据定义有: [Y]原码=11011011 [Y]反码=10100100
[Y]补码=10100101
补码表示的整数范围是-2n-1~+(2n-1-1),其中n为机器字长.
则:8位二进制补码表示的整数范围是-128~+127
16位二进制补码表示的整数范围是-32768~+32767
当运算结果超出这个范围时,就不能正确表示数了,此时称为溢出.
4.补码与真值之间的转换
正数补码的真值等于补码的本身;负数补码转换为其真值时,将负数补码按位求反,末位加1,即可得到该负数补码对应的真值的绝对值.
【例2.16】[X]补码=01011001B,[X]补码=11011001B,分别求其真值X.
(1)[X]补码代表的数是正数,其真值:
X=+1011001B
=+(1×26+1×24+1×23+1×20)
=+(64+16+8+1)
=+(89)D
(2)[X]补码代表的数是负数,则真值:
X=-([1011001]求反+1)B
=-(0100110+1)B
=-(0100111)B
=-(1×25+1×22+1×21+1×20)
=-(32+4+2+1)
=-(39)D
全部回答
  • 1楼网友:轻熟杀无赦
  • 2021-11-19 13:53
原码:在用二进制原码表示的数中,符号位为0表示正数,符号位为1表示负数,其余各位表示尾数本身,这种表示方法称为原码表示法.
补码:可以把负数转换为正数,使减法转换为加法,从而可使正、负数的加减动算转化为单纯的相加运算,而得到正确的结果。
反码:作为求补码的中间手段是非常有用的。

二进制负数存的是补码,第一位是符号位为1 表示是负数,算法是负数去掉符号的正数的二进制形式按位取反再加1得到的补码形式。
例如:4 是00000100
取反原码、反码、补码都是有符号定点数的表示方法。
一个有符号定点数的最高位为符号位,0是正,1是副。

原码就是这个数本身的二进制形式。
原码:1000原码1000
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯