单片机/MCU论坛
直播中

alexdos

6年用户 804经验值
擅长:可编程逻辑 电源/新能源 嵌入式技术 模拟技术
私信 关注
[讨论]

补码是什么 补码和原码的转化

计算机中的有符号数有三种表示方法,即原码、反码和补码。三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位,三种表示方法各不相同。在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理。

在补码表示法中, 正数的补码与正数的原码相同, 负数的补码由它的反码加 1 形成。例如:

(+ 30) 补 = ( + 30) 原 = 00011110
( - 30) 补 = (- 30) 反 + 1 = ( + 30) 原 + 1 = 11100001 + 1 = 11100010

注意:

(1) 8 位二进制补码能表示数的范围为- 128~+ 127。
(2) 在补码中, + 0 与- 0 的表示法相同。
(3) 当符号位为 0 时, 其余位为数的真值; 当符号位为 1 时, 其余位按位取反再加 1 后 才是数的真值。

补码求原码:

已知一个数的补码,求原码的操作其实就是对该补码再求补码:
⑴如果补码的符号位为“0”,表示是一个正数,其原码就是补码。
⑵如果补码的符号位为“1”,表示是一个负数,那么求给定的这个补码的补码就是要求的原码。
例:已知一个补码为11111001,则原码是10000111(-7)。
因为符号位为“1”,表示是一个负数,所以该位不变,仍为“1”。
其余七位1111001取反后为0000110;再加1,所以是10000111。

回帖(1)

王栋春

2019-12-11 22:00:16
PLC当中也会用到数值转换
举报

更多回帖

发帖
×
20
完善资料,
赚取积分