有关原码 反码 补码

一、原码 反码 补码

原码:直接用二进制表示数字

反码:正数的反码就是其本身,负数的反码为除开符号位其余全部取反

补码:正数的补码就是其本身,负数的补码在反码基础上+1(补码存在的意义就是将减法变成加法,并且使符号位也参与运算)

例如,模24的情况下:

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23(无符号)

0 1 2 3 4 5 6 7 8 9 10 11 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1(有符号)

可以看出,为了表示负数,牺牲了一半的空间用来表示负数。

我们知道,在负数情况下,反码是除开符号位对原码进行取反,那么数值位原码+补码一定等于全1,即2^n-1.

比如-3,怎么转成补码呢?首先,数值部分为3,反码数值部分+原码数值部分=12-1,则反码数值部分等于8,补码等于反码+1=9,且补码前面的符号位所表示的数值大小为12,则补码的总值等于12+9=21,对照上面的两行表,恰好是-3的位置。

比如:

9-3

=9+(-3)  //减法变加法

=9+21  //符号位参与运算,转换为补码,那么-3在值上应该是表示21

=30%24  //计算机中由于存储空间长度受限,溢出会舍弃,天然取余

=6

后续会持续更新

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值