计算机原理-详解原码、反码、补码、移码(不含浮点数)

我们都知道数值在计算机中表示的形式称为机器数,其特点是采用二进制计数制,数的符号用0,1表示,小数点则隐含,表示不占位置。机器数对应的实际数值称为数的真值。

为了便于运算,带符号的机器数可采用原码,反码,和补码等不同的编码方法

原码

源码的表示法。数值X的原码记为X原,如果机器字长为n(即采用n个二进制来表示数据)

例如n为8

原码、补码、反码、移码讲解_补码

原码表示中最高位是符号位,即是表示正负,0为正,1为负

原码的负数只改变符号位其他的都不变

+1原 = 0 00000001 -1原 = 1 00000001

+127原 = 0 1111111 -127原 = 1 1111111

+45原 = 0 0101101 +45原= 1 0101101

反码

正数的反码和原码相同,负数的反码则是除符号位以外,其余按位取反,

这里肯定有人问是啥意思?其实很简单

例如

+1反 = 0 0000001 -1反 = 1 1111110 这里就表明只要位数上的是1就取反变为0,0就变为1

补码

在补码的表示中,最高位为符号位,0表示正号,1表示符号,正数的原,反,补都相等,负数的补码则是,反码的基础上在反码的末尾+1,在补码的表示中,0有唯一的编码:【+0】补= 0 0000000,【-0】补 = 00000000

即一个数求补码,要先求反码再求补码

【+45】补 = 00101101 【-45】补 = 11010011

【【x】补】补 = 【x】 原

求取方法就是 = 》求【x】补的反码 = 》【x】反 = 》再求补码

移码

补码的符号位取反就是移码

【+45】移 = 10101101 【-45】移 = 00101101