原码,反码,补码,移码

文章介绍了计算机中用于表示数值的四种编码方式:原码、反码、补码和移码。原码直接表示正负,但加减运算不便;反码正数不变,负数数值位取反;补码在反码基础上加1,利于加减运算;移码常用于浮点数阶码表示。每种编码都有其优缺点及特定应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原码,补码,反码,移码:

首先清楚为什么会出现这四种编码表示方式?在我看来因为计算机底层本身不能像人类那样直接识别算术运算符+-*/,因为计算机中一般都是采用二进制数来表示数据,所以为了计算机能够以0/1就能进行这些算术运算,从而出现了这几种编码表达式。以下内容都是围绕二进制数展开讨论的。

原码:

不论二进制数是正数还是负数原码的数值位都与二进制数的数值相同。

(这里假设机器长度为5位)

纯小数型:符号位+小数位. 如:二进制数-0.1101 的原码为 1.1101

纯整数型:符号位+整数位 如:二进制数-1011 的原码为 11011

符号位一般用0表示整数,用1表示负数。

注意在原码中,若二进制数为0,则有两种表示形式

+0的原码为00000

-0的原码为10000

原码表示法的优点:直观易懂,用来进行乘除运算时较为简单。

缺点:不方便进行加减运算。

反码:

若二进制数为正数,则该二进制数的反码与原码相同。

如: 二进制数1111 原码为 01111 反码为01111

若二进制数为负数,则该二进制数的反码的符号位与原码相同,数值位与原码相反。

如: 二进制数-1100 原码为11100 反码为 10011

小数位同理。

需要注意的是反码中的0也是有两种表现形式:

+0的反码为 01111

-0的反码为 11111

补码:

若二进制数为正数,则该二进制数的补码与原码相同。

如: 二进制数1111 原码为 01111 反码为01111 补码为01111

若二进制数为负数,则该二进制数的补码的符号位与原码相同,数值位为反码+1。

如: 二进制数-1100 原码为11100 反码为 10011 补码为 10100

 

小数位同理。

优点:

1、用加法就可以实现减法、乘法和除法运算,能简化计算机中运算器的内部结构。

2、可以让符号位作为数值直接参加运算,而最后仍然可以得到正确的结果符

原码,补码,反码之间的相互转换:

 

移码:

又称为增码或者偏码

组成: 偏移值+数值

假设偏移值为2^7,二进制数为字长为8位的纯整数型(定点整数)

则二进制数11011111的移码为111011111(既100000000+11011111)

主要用于表示浮点数的阶码部分。(具体请看浮点数的表示方法)

练习:

二进制数原码反码补码
1011011010110101101
-1011110111010010101
0.11100.11100.11100.1110
-0.11101.11101.00011.0010
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码商道

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值