计算机原码、反码 、补码

一、概述

  • 真值:十进制、二进制、八进制、十六进制等用来表示实际数值的数
  • 机器数:数在计算机中的表示形式
  • 原码:正数是其二进制本身;负数是符号位为1,数值部分取X绝对值的二进制
  • 反码:正数的反码和原码相同;负数是符号位为1,其它位是原码取反
  • 补码:正数的补码和原码,反码相同;负数是符号位为1,其它位是原码取反,未位加1。(或者说负数的补码是其绝对值反码未位加1)

现代计算机中普遍使用补码表示法,而不是原码

编码108(十进制)-108(十进制)
原码0110110011101100
反码0110110010010011
补码0110110010010100

二、原码

原码就是符号位和真值的绝对值组成的

[+1] = [00000001]原

[-1] = [10000001]原

三、反码

反码,主要用于原码和补码的相互转换,反码作为中间数过渡使用

[+1] = [00000001]原 = [00000001]反

[-1] = [10000001]原 = [11111110]反

四、补码

[+1] = [00000001]原 = [00000001]反 = [00000001]补

[-1] = [10000001]原 = [11111110]反 = [11111111]补

1.补数和模

例如,时钟指针指向6,要是它指向3,可以让指针逆时针方向走3格,也可以让指针顺时针方向走6格。

6 + (-3) = 3 和 6 + 9 =15

在数学上,称时钟的12格为,写作mod12,而称+9是-3以12为模的补数。对于模12而言,-3和+9是互为补数的。

−3 ≡ +9(mod 12)

只要确定一个模,就可以找到一个与负数等价的正数来代替该负数,而这个得到的正数,即为负数的补数。

结论一:负数的绝对值,和它的补数相加,就是模

结论二:负数和模相加,得到该负数对应的正数补数

利用补数和模,可以把减法转化为加法:

A是9,B是5,对于模12,-5的补数是7

A - B = 9 - 5 = 4

A - B = 9 + 7 = 16 = 4(mod 12)

对于二进制,有:

−1011 ≡ +0101 (mod 24)
−0101 ≡ +0101 (mod 24)
−0.1001 ≡ +1.0111 (mod 2)
+0.1001 ≡ +0.1001 (mod 2)

2.补码

补数的出现,可以让原本作减法的式子变成加法

负数的补数为正数,但负数的补码前的符号位依然是负符号为1,即符号位与原数保持一致

例如,A = 1110,B = 1101

A - B = [0,1110]原 - [0,1101]原 = [0,0001]原 (mod 24)

A - B = [0,1110]补 + [1,0011]补 = [10,0001]补 = [0,0001]补 = [0,0001]原 (mod 24)

补码运算的运算的符号位进位溢出

五、表示范围

二进制编码无符号数原码反码补码
0000 00000+0+0+0
0000 00011+1+1+1
0000 00102+2+2+2
...............
0111 1101125+125+125+125
0111 1110126+126+126+126
0111 1111127+127+127+127
1000 0000128-0-127-128
1000 0001129-1-126-127
1000 0010130-2-125-126
...............
1111 1101253-125-2-3
1111 1110254-126-1-2
1111 1111255-127-0-1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值