前言

为了方便统一表示整数、零和负数,常用原码、反码、补码来表示一个二进制数。
此文章仅讨论原码、反码、补码的计算方法,不涉及相应的概念。
如果文章内容有误,可在评论区指出。

一、原码

[1]. 定点小数

X为一个二进制数
X(0,1) 之间时,X的原码X去掉小数点,去掉正号
X(-1,0] 之间时,X的原码在X整数部分+1后,去掉小数点,去掉负号

【例】X= +0.1011
[X]原=01011

【例】X= -0.1011
[X]原=11011

[2]. 整数

X为一个二进制数
X>0时,X的原码X前面添0,去掉正号
X<0时,X的原码X前面添1,去掉负号

【例】X= +10101
[X]原=010101

【例】X= -10101
[X]原=110101

二、反码

[1]. 定点小数

X为一个二进制数
X在[0,1)时,X的反码X去掉小数点,去掉正号
X在(-1,0]时,X的反码先对每一位取反,去掉小数点,去掉负号

【例】X= +0.1011
[X]反=01011

【例】X= -0.1011
[X]反=10100

[2]. 整数

X为一个二进制数
X>0时,X的反码X前面添0,去掉正号
X<0时,X的反码先对每一位取反,前面添1,去掉负号

【例】X= +10101
[X]反=010101

【例】X= -10101
[X]反=101010

三、补码

[1]. 定点小数

X为一个二进制数
X在[0,1)时,X的补码X去掉小数点,去掉正号

X在[-1,0]时,X的补码在X的反码基础上+1
X在[-1,0)时,X的反码先对每一位取反,去掉小数点,去掉负号

【例】X= +0.1011
[X]补=01011

【例】X= -0.1011
[X]反=10100
[X]补=10101

[2]. 整数

X为一个二进制数
X>0时,X的补码在X前面添0,去掉正号

X<0时,X的补码在X的反码基础上+1
X<0时,X的反码先对每一位取反,前面添1,去掉负号

【例】X= +10101
[X]补=010101

【例】X= -10101
[X]反=101010
[X]补=101011

四、总结

对于正数X来说,[X]原=[X]反=[X]补
对于负数X来说,[X]补=[X]反+1

对于整数X来说,在X前需添0或1
对于小数X来说,X整数位需变为0或1

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐