码迷,mamicode.com
首页 > 其他好文 > 详细

软考之 原码、反码、补码、移码的区别

时间:2020-07-13 11:34:14      阅读:86      评论:0      收藏:0      [点我收藏+]

标签:知识点   机器   原码   就是   负数   其它   数值   转换   的区别   

一 、原码

原码就是符号位加上值的绝对值, 即用第一位表示符号, 其余位表示值.

符号位:

0表示+

1表示-

如 

 原 : 0000 0001   =  [+1]

 原 : 1000 0001   =  [-1 ] 

 

二、反码

反码的表示方法是:正数的反码是其本身;负数的反码是在其原码的基础上, 符号位不变,其余各个位取反。

[+1] = [00000001]原 = [00000001]反

[-1] = [10000001]原 = [11111110]反

 

三、补码

补码的表示方法是:正数的补码就是其本身;负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. 

或者说负数的补码等于反码末位加1。

X=-101011 , [X]原= 10101011 ,[X]反=11010100,[X]补=11010101

[+1] = [00000001]原 = [00000001]反 = [00000001]补

0的补码是唯一的,如果机器字长为8那么[0]补=00000000

 

四、移码

移码等于补码的符号(第一位数字)位取反。

同一数值的移码与补码符号位相反,其它各位相同。

 

额外知识点:

原码中0有两种表示方式:[+0]原=0000000,[-0]原=1000000。
在反码表示中,0也有两种表示形式:[+0]反=0000000,[-0]反=11111111。
在补码表示中,0有唯一的编码:[+0]补=0000000,[-0]补=0000000。

[-1] = [10000001]原 = [11111110]反 = [11111111]补。

 

总结:

正数的原码,补码,反码相同;

负数的反码:原码的数值取反;

负数的补码:原码转换成反码,反码末位加1

负数的移码:与补码的符号位(第一位数字)相反

 

软考之 原码、反码、补码、移码的区别

标签:知识点   机器   原码   就是   负数   其它   数值   转换   的区别   

原文地址:https://www.cnblogs.com/zhangqb/p/13292148.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!