原码反码补码移码简单介绍[一句话概括]

机器数和符号位

在学习原码,反码和补码之前 我们先来了解什么叫机器数和真值

  1. 机器数: 一个数在计算机中的二进制表示形式,叫做这个数的机器数
  2. 机器数是带符号的 在计算机中用一个数的最高位存放符号 正数为0 负数为1

比如 十进制中的数 +5 如果计算机字长为8位 转换成二进制的话就是 0000_0101

如果是 -5 就是1000_00101(原码)

真值

因为第一位是符号位 所以机器数的形式值不等于真正的数值 例如上面的有符号数 1000_0101 其最高位1代表负 其真正的数值是 - 5 而不是形式值 133 (10000101转换成十进制是133) 所以 为区别起见 将带符号位的机器数对应的真正数值称为机器数的真值

原码

原码就是符号位加上真值的绝对值 即用第一位表示符号 其余位表示值 比如如果是8位二进制:

[+1]原 = 0000_0001

[-1]原 = 1000_0001

因为第一位是符号位 所以8位二进制的取值范围是

[1111_1111,0111_1111] 即[-127,127]

这个地方要注意一下 不是[-128,127]或者[-128,128]

原码是人脑最容易理解和计算的表示方式

反码

反码就是 : 正数的反码是其本身 负数的反码是在其原码的基础上 【符号位不变】其余各个位【取反】

[+1] = [0000_0001]原 = [0000_0001]反
[-1] = [1000_0001]原 = [1111_1110]反

可见如果一个反码表示的是负数,人脑无法直观的看出来它的数值,通常要将其转换成原码再计算。

补码

补码就是 : 正数的补码就是其本身。负数的补码是在其原码的基础上,【符号位不变】,其余各位取反,最后+1,即【取反+1】

[+1] = [0000_0001]原 = [0000_0001]反 = [0000_0001]补
[-1] = [1000_0001]原 = [1111_1110]反 = [1111_1111]补

对于负数,补码表示方式也是人脑无法直观看出其数值的,通常也需要转换成原码再计算其数值。

移码

移码最简单了,不管正负数,只要将其补码的符号位取反即可。

[+1] = [0000_0001]原 = [0000_0001]反 = [0000_0001]补 = [1000_0001]移

[-1] = [1000_0001]原 = [1111_1110]反 = [1111_1111]补 = [0111_1111]移

对于一个数 计算机要使用一定的编码方式进行存储 原码反码补码是机器存储一个具体数字的编码方式

  • 10
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值