原码、补码、反码、移码的介绍与比较

本文详细介绍了计算机中数值的四种表示方法:原码、补码、反码和移码。原码用最高位表示符号,补码用于表示负数,反码作为过渡,移码常用于浮点数阶码。每种表示法都有其特定的范围和特性,例如真值零的表示形式,以及如何通过这些码转换进行数值运算。此外,还提到了快速由原码得到补码或由补码得到原码的技巧。
摘要由CSDN通过智能技术生成

本篇中的真值:二进制数或十进制数前加上正负号

一、原码表示法

用机器数的最高位表示某个数的符号,其余的各位表示的绝对值。

例1:十进制小数0.8125。原码字长为8位。

在这里插入图片描述
若字长为n+1,则原码小数的表示范围为-(1-2-n)≤x≤1-2-n

例2:十进制整数15。原码字长为8位。

在这里插入图片描述
若字长为n+1,则原码整数的表示范围为-(2n-1)≤x≤2n-1。

真值零的原码表示有正零和负零两种形式。[+0] = 0000 / [-0] = 1000

二、补码表示法

对于正数,补码与原码的表示相同,[x]=[x]
对于负数,原码符号位不变,数值部分按位取反,末位加1。【此规则同样适用于由[x]求[x]

例1:十进制小数0.5625和-0.375。补码字长为8位。

在这里插入图片描述
若字长为n+1,则补码小数的表示范围为-1≤x≤1-2-n

例2:十进制整数10和-13。补码字长为8位。

在这里插入图片描述

若字长为n+1,则补码整数的表示范围为-2n≤x≤2n-1。

真值零的补码表示是唯一的。[+0] = [-0] = 0000。多出的1000(2)在十进制小数中可表示为-1,在整数中可表示为-2n,如在8位补码中,1000000(2)表示数值-128(10)

三、反码表示法

反码通常用来作为由原码求补码或由补码求原码的中间过渡。
若为正数,则[x]=[x]
若为负数,则将该数原码的数值位全部取反。

例1:十进制小数0.325。反码字长为8位。

在这里插入图片描述
若字长为n+1,则反码小数的表示范围为-(1-2-n)≤x≤1-2-n

例2:十进制整数11。反码字长为8位。

在这里插入图片描述
若字长为n+1,则反码整数的表示范围为-(2n-1)≤x≤2n-1。

真值零的反码表示不唯一。[+0] = 0000 / [-0] = 1111

原码、反码、补码的比较如下:
D表示数值为十进制
在这里插入图片描述

四、移码表示法

移码常用来表示浮点数的阶码。它只能表示整数。
移码就是在真值x上加上一个常数(偏置值),通常这个常数取2n,相当于x在数轴上向正方向偏移了若干单位。

例:十进制整数21。移码字长为8位,则偏置值为27(假设字长为n+1)
在这里插入图片描述

①移码中零的表示唯一。[+0] = 2n+0 = [-0] = 2n-0 = 100
②一个真值的移码和补码仅差一个符号位,[x]的符号位取反即得[x],反之亦然
③移码全0时,对应真值的最小值-2n;移码全1时,对应真值的最大值2n-1
④移码保持了数据原有的大小顺序,移码大真值就大,移码小真值就小

补码、移码的比较如下:
在这里插入图片描述
tips:若某真值为负数,快速由原码得到补码或由补码得到原码的小技巧
补码从末位开始往前找,找到第一个遇到的1。该1(不包括这个1)之前的数与反码相同,该1(包括这个1)之后的数与原码相同。
在这里插入图片描述
本文章为王道考研系列的计算机组成原理书中关于原码、补码、反码、移码的知识点的简单总结。如果有误,欢迎指正。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值