原码,反码,补码表示法

首先,我们引入一些相关的概念.

机器数: 数据在计算机中的表示形式。 数的符号存在最高位(左边),0代表正数,1代表负数。分成有符号和无符号两种。

A.对于无符号的数值,整个都是数值区。

B. 对于有符号的数值,数据分成两部分:符号位+数值区。

小数点:隐含表示,不占位置。

A. 对于无符号数值,小数点在最左边,代表是纯小数。在右边,代表纯整数。

B. 对于有符号的数值,小数点在数值区最左边,代表是纯小数。在数值区右边,代表纯整数。

真值:机器数对应的真实数值。

 

为了方便计算,带符号的机器数分成原码、反码和补码的不同编码方法。

1. 原码

左边的第一位表示符号(0为正,1为负), 其余位表示数值.

真值变成原码的转换方法:

(1)取真值的绝对值的2进制表示。

(2)左边第一位添加符号。  

例如:

考虑一个字节的存储,-127, 绝对值为127的2进制表示为 0111 1111, 添加符号(1)为 1111 1111。

当真值=0的时候,[+0]可以表示成 0000 0000, [-0]可以表示成 1000 0000。

2. 反码

反码的表示方法是:

(1)如果是正数,反码与原码一样。

(2)如果是负数,反码是符号位不变,原码其余各个位取反.

例如:

[+127]=0111 1111, [+127]=0111 1111,

[-127]=1111 1111, [-127]=1000 0000。

[+0]=0000 0000, [+0]=0000 0000,

[-0]=1000 0000, [-0]=1111 1111。

3. 补码

补码表示方法:

(1)如果是正数, 补码与原码一样。

(2)如果是负数,在反码的基础上+1。

例如:

[+127]=0111 1111, [+127]=0111 1111,[+127]=0111 1111

[-127]=1111 1111, [-127]=1000 0000,[-127]=1000 0001

[+0]=0000 0000, [+0]=0000 0000,[+0]=0000 0000,

[-0]=1000 0000, [-0]=1111 1111,[-0]=0000 0000。

我们发现,原码、反码、补码对于正数和+0都是一样的。对于0,补码的表示唯一。

 

 

 

 

 

 

转载于:https://www.cnblogs.com/bruce81/p/3536596.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值