首页 > 其他分享 >5.1.5_原反补码的特性对比

5.1.5_原反补码的特性对比

时间:2023-02-07 21:47:33浏览次数:39  
标签:表示 5.1 真值 反码 比特 补码 原反 原码

这一小节中,我们要学习原码、反码、补码3 种码的特性对比,需要注意这样的几个维度。
image.png

一会我们会来分别探讨,这是小题当中很常见的考点哈。

这个小节的内容不难,也不多,我们只需要注意表里边给大家总结的问题就可以了。
image.png

经过之前的学习,我们知道了带符号的整数,可以用原、反、补三种方式来表示。

无符号的整数把所有的比特位都作为数值位,无符号的整数它只有一种编码方式,所以我们没给它取什么什么码这样的名字。

接下来我们来看一下对于 n + 1 个比特表示的原码、反码、补码以及无符号整数,它们的合法表示范围、最大的数、最小的数以及真值 0 的表示分别是什么样的情况。

(1)原码

首先,之前我们讨论过原码的表示范围。如果用 n + 1 个比特表示原码,原码的数值位就有用 n 个比特来表示,n 个比特可以表示的数的范围应该是 0~ 2 的 n 次方减1。再加上1个比特的符号位,可以表示正号或者负号。

因此原码它的一个合法表示范围是这样的范围,它可以表示的最大的数应该是正数0,后面所有的都是 1 ,转变成十进制的值应该是 2 的 n 次方减1。

最小的数就是负的1,数值位让它保证值是最大的,也就是全为1。这样我们就可以表示最小的数,负的 2n 次方减1。

之前我们也说过,原码的真值 0 有两种表现方式,一种是正0,一种是负0。

(2)反码

反码和原码是一毛一样的。

首先,反码和原码,它们的合法表示范围都一样。

反码它也有正0和负0这两种真值 0 的表示形式,反码可以表示的最大的数和最小的数,真值和原码也是一致的,所以反码其实不用多说。

(3)补码

这儿我们需要特别注意的是补码

补码可以表示的合法范围要比原码更多一个负数。

如果用 8 个比特来表示原反补码的话,原码和反码可以表示的范围应该是-127 到+127,而补码可以表示的范围应该是-128 到+127。
image.png

补码可以比原码多表示一个负数。最小的负数的补码形式长1,000...000这个样子,就是符号位为1,后面的全部为0。

如果是8比特的补码,可以表示的最小的数应该是10000000,这是8比特可以表示的最小的数,它的真值是-128 。

8比特的原码可以表示的最小的数应该是1,1111111这样的一个值,也就是-127 。

所以我们上一小节讲过原码和补码之间的相互转换。由于补码可以比原码多表示一个负数,所以补码当中更小的负数,想要把它转变为位数相同的原码是不可能的,转不了,因为用相同的位数原码没办法表示-128 这个数。

所以这是补码最特殊的一个存在,它可以比原码多表示一个负数。

同时在补码当中,真值 0 也只有唯一的一种表示方式,符号位为0,后面的这些也全部为0。

所以这一点是一定要注意的。

(4)无符号整数

最后看无符号整数

这些特性我们在讲无符号整数的小结当中,也给大家总结过。 n + 1 个比特表示无符号整数,那么它的合法表示范围可以表示的最大的数,最小的数,还有真值 0 的表示方法,这些大家也都需要很熟悉。

重点要强调的还是补码它的表示范围以及真值 0 的表示方法和原码反码之间的一点区别。

大家特别注意标红的这些地方就可以了。


最后再说一个在很多小题和大题当中都挺常见的一种考法。

题目会给你两个数 A 和B。一般来说就是用二进制或者 十六进制来表示。他会问你这两个数进行某种运算之后,比如加减乘除这些运算之后,问你是否会发生溢出。

这种题目怎么解决?

如果手算,你判断溢出的方法可以带入十进制去验证。

我们来看。 以8比特为例,如果用8比特表示 A 和B,如果这8比特是用原码的方式来表示, 那么A 的值是原码表示的-64, B 的值是原码表示的-64。

题目如果问你 A 和 B 进行加法之后,结果同样用8比特的原码表示,是否会发生溢出。

显然会发生溢出,-64和-64,两个一相加应该是等于-128。

而8比特的原码可以表示的范围就是-127到+127,显然这个值已经超出了8比特原码可以表示的范围,所以此时一定会发生溢出。

如果换一个情况,如果这8比特是用补码表示的,同样 A 是-64, B 也是-64,问你 A 加 B 的结果,同样用8比特的补码来保存有没有发生溢出呢?

此时就没有发生溢出,我们说了,补码它可以多表示一个负数,8比特的补码可以表示的合法范围应该是-128 到+127,所以 A 加 B 的值刚好没有超出8比特补码可以表示的范围。

因此如果是用补码来保存结果,此时加法运算就没有发生溢出。

以上就是小节的全部内容。

标签:表示,5.1,真值,反码,比特,补码,原反,原码
From: https://www.cnblogs.com/wanjiadenghuo/p/17099891.html

相关文章

  • 5.1.1_进位计数制
    @目录一、引子二、计数方法(1)最古老计数方法(2)罗马数字(3)十进制计数法1.整数2.小数(4)r进制计数法1.r进制2.r进制转为十进制3.十进制转换为r进制4.r进制加法(5)二进制1.二进......
  • 5.1.2_BCD码
    @目录一、引子二、BCD码(1)作用(2)8421码1.介绍2.加法运算(3)余3码(4)2421码三、总结回顾一、引子这一个小节我们要学习的是BCD码,BCD码的意思是使用二进制来编码的十进制数。我......
  • Linux ALSA驱动之五:Linux ALSA驱动之Platform源码分析(基于Linux 5.18)
    1、Platform概述ASoC被分为Machine,Platform和Codec三大部件,Platform驱动的主要作用是完成音频数据的管理,最终通过CPU的数字音频接口(DA〉把音频数据传送给Codec进行处理,最终......
  • 内存和磁盘的亲密关系——5.1不读入内存就无法运行
    1.存储程序方式指的是什么?在存储装置中保存程序,并逐一运行的方式2.通过使用内存来提高磁盘访问速度的机制称为什么?DiskCache(磁盘缓存)3.把磁盘的一部分作为假想内存来......
  • Linux ALSA驱动之四:Control设备创建流程源码分析(5.18)
    Control接口主要让用户空间的应用程序(​​alsa-lib​​​)可以访问和控制​​音频​​​codec芯片中的多路开关,滑动控件等。对于​​Mixer​​​(混音)来说,Control接口显得尤......
  • 短说PC端功能『门户』正式上线 ,暨2.5.1正式版发布通告
    Hi大家好,我是给你们带来惊喜的运营小番茄。今天小番茄告诉大家一个好消息:短说PC端2.5.1版本正式版来啦!正式推出门户首页功能,以及修复了在测试版中的问题。本次更新同时支持......
  • 原码、反码、补码
    原码、反码、补码计算机存储数据是以补码的形式进行存储的原码已一个字节(8位)为例最高位为符号位,0代表正数,1代表负数,非符号位为该数字绝对值的二进制反码正数的......
  • Win7 安装powershell 5.1
    检查本机powershell的版本PS>$PSVersionTable.PSversionMajorMinorBuildRevision20-1-1当前版本位2.0版本下载WindowsManagementFram......
  • 15.1 SQL Server创建LOGIN(登录)
    SQLServer创建LOGIN(登录)目录SQLServer创建LOGIN(登录)简介示例SQLServerCREATELOGIN语句更多选项CHECK_POLICY选项CHECK_EXPIRATION选项MUST_CHANGE选项从Windows域帐......
  • [概率论与数理统计]笔记:5.1 点估计概述
    第五章参数估计与假设检验5.1点估计概述相关概念:参数空间:参数的取值范围。点估计:对未知的参数进行估计所得到的一个具体的数据,结果是一个数(数轴上的一个点)。......