前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >原码反码补码

原码反码补码

作者头像
mathor
发布2018-06-22 10:35:56
1.5K0
发布2018-06-22 10:35:56
举报
文章被收录于专栏:mathormathor

    在对带符号数进行运算时,必然涉及数的符号问题,人们通常在一个数的前面用“+”表示正数,用“-”表示负数。而在数字系统中,符号和数值一样使用0和1来表示的,一般将数的最高位作为符号位,用0表示正,用1表示负,其格式为:

符号位

数值位

   把符号和数值一起编码表示的二进制数称为机器数或机器码,常用的机器码有原码,反码,补码三种。

一、原码

用原码表示带符号位二进制数时,符号位用0表示正,1表示负,数值位保持不变,原码表示法又称符号-数值表示法

整数原码和小数原码

    二进制整数原码就是在其最高位添加0或1,用于表示正负,小数也是一样。

例1:$X_1=+1101,X_2=-1101,$则$X_1$和$X_2$的原码为:$[X_1]_原=01101,[X_2]_原=11101$.

    根据定义:整数“0”的原码有两种形式,即00…0或10…0.

例2:$X_1=+0.1011,X_2=-0.1011$,则$X_1$和$X_2$的原码为:$[X_1]_原=0.1011,[X_2]_原=1.1011$

    根据定义:小数“0”的原码也有两种形式,即0.0…0或1.0…0.

二、反码

正数反码的数值位和真值相同;负数反码的数值位是真值按位取反

例1:$X_1=+0.1011,X_2=-0.1011$,则$X_1$和$X_2$的反码为:$[X_1]_反=0.1011,[X_2]_反=1.0100$

    根据定义:小数“0”的反码有两种表示形式,即0.0…0或1.0…0.

    根据定义:整数“0”的反码也有两种表示形式,即00…0或10…0.

三、补码

用补码表示带符号的二进制数时,符号位与原码、反码相同。正数补码的数值位与真值相同,负数补码的数值位为反码在最低为加1

例:$X_1=-0.1011,X_2=-1010$,则$X_1$和$X_2$的补码为:$[X_1]_补 = 1.0101,[X_2]_补 = 10110$

    根据定义:小数“0”的补码只有一种表示形式,即0.0…0.

    根据定义:整数“0”的补码也只有一种表示形式,即00…0.

    采用补码进行加、减运算时,其加、减运算均可通过加法是按,运算规则如下:

$[X_1+X_2]_补=[X_1]_补+[X_2]_补$

$[X_1-X_2]_补=[X_1]_补+[-X_2]_补$

    运算时,符号位和数值位一样参加运算,若符号位有进位产生,则应该将进位去掉才能得到正确结果。

例:若$X_1=-1001,X_2=+0011$,则采用补码求$X_1-X_2$的结果为:$[X_1-X_2]_补=[X_1]_补+[-X_2]_补=10111+11101=10100$,由于结果的符号位为1,表示是负数,故$X_1-X_2=-1100$

四、总结

(1)若$X>0$,则$[X]_原=[X]_反=[X]_补$.

(2)$[X+Y]_补 \xrightarrow[求反,最低位+1]{} X+Y$.

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-03-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档