整数表示—补码、原码、反码

本文介绍了计算机中有符号数的三种表示方式:补码、反码和原码。补码是最常见的表示形式,其最高位作为符号位,其余位表示数值。反码与补码类似,但最高有效位的权值不同。原码则是直接用最高位表示正负。补码的使用使得计算负数变得简单,如计算-B2T([1011])时,可以直接用2^w-B2T([1011])来得到结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、补码

最常见的有符号数的计算机表示方式就是补码 (Two's complement) 形式。在这个定义中,将字的最高位解释为负权(negative weight)。用函数

最高有效位也成为符号位,他的权重为-2^(w-1),是无符号表示中权重的负数。符号位被置为1时,表示值为负,而当设置为0,值为负数。这里来看一个示例。

B2T([0001]) = -0*2^3 + 0*2^2 + 0*2^1 + 1*2^0 = 1

B2T([1011]) = -1*2^3 + 0*2^2 + 1*2^1 + 1*2^0 = -5

根据定义式,我们可以看出,补码最小值为[10...0],符号位为1,其他为均为0;最大值刚好相反。


有符号数还有两种标准的表示方法:

二、反码

反码(One's complement)除了最高有效位的权是-(2^(w-1) - 1) 而不是 -2^(w-1) ,它和补码是一样的

                  

三、原码

原码(Sign-Magnitude)最高有效位是符号位权为1,用来确定剩下的位应该取负权还是取正权


注意:

1) 补码来源于这样的一个情况,对于非负数x, 我们用 2^w-x 来计算 -x 的 w 位表示。

比如 B2T([1011]) = -5 = 16-5 = 11 = [1011]

2) 术语反码来源于这样的一个属性,我们用[11...1]-x  来计算 -x 的反码






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值