二进制补码原理

一、原码、反码、补码

1、在计算机中,整数值都是以补码的形式存储与运算;

2、为了提升计算机运算效率,补码的形式可以使计算机只需要实现加法就行了。

3、原码、反码、补码

以8位二进制举例,第一位是符号位(0-正;1-负);剩下的7位都表示实际数值。

原码:符号位+实际数值。表示范围[-127, 127]

反码:符号位。 表示范围[-127, 127]。

          正数的反码:与原码一致;

          负数的反码:符号位不变,实际数值位取反。

补码:符号位。 表示范围[-127, 127]。

          正数的补码:原码一致;

          负数的补码:符号位为1,实际数值位取反之后再加1。

补码转换为原码:符号位不变,其他位取反之后再加1

原码反码补码
10000010100000101000001010
-10100010101111010111110110

通常情况下,补码不使用符号位0000 0000~1111 1111,即0~255,共256个数字,[0, 255]。

二、补码运算

基于时钟(模12):8-2 =8+(-2) =8+10(2的补数)=6点

基于二进制(模256):8-2=8+(-2) =8+(256-2)(即2^8-2)

=(补)[0000 1000]+(补)[1111 1110]   =(补)[1 0000 0110]

=结果共9位,但是只能保存8位,会将最高位1舍去,从而运算结果为:(补)[0000 0110]=6

三、补码运算原理

概念

1、模:表示值的范围。模型如时钟一圈,其模是12;8位二进制00000000 ~ 11111111(0~256),其模为256

2、补数:a的补数为(模-a)举例子8的补数为4(即00001000的补数为11111000)

推理

A=2(十进制)=  0000 0010(二进制)

B= 取反A          = 1111 1101

C= B + 1           = 1111 1110                                               =254(即2^8-2)

其中,A + C  = A+(B+1) = A+(取反A+1)  = 10000 0000    =256(即2^8,即为8位二进制模)

则,A与C(取反A+1)互补

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值