负数补码的移位规则

负数补码的移位规则由原码求得补码的方法 1 定义法补码解决了计算机在进行数值运算的两个问题 一个是减法运算能不能使用加法电路 另一个是原码中 0 的表示不唯一 正数的补码就是其原码 整数负数的补码是 真值 以 2 为底以数值位数加一为指数的幂 模 即以这个幂为模的补数 这里描述下补码的几何意义 大家可以画一个数轴 假定数值位有三位 模是 16 那么加上一位符号位 数轴从 0 000 开始往右依次加一是 0 001 0 010 0 011 0 111 共八个数 这个时候如果继续

由原码求得补码的方法:

       1、定义法

       补码解决了计算机在进行数值运算的两个问题,一个是减法运算能不能使用加法电路,另一个是原码中“0”的表示不唯一。正数的补码就是其原码,整数负数的补码是:真值+以2为底以数值位数加一为指数的幂(模),即以这个幂为模的补数。

       这里描述下补码的几何意义,大家可以画一个数轴,假定数值位有三位,模是16,那么加上一位符号位,数轴从0,000开始往右依次加一是0,001、0,010、0,011 … 0,111共八个数,这个时候如果继续加一等于8(0,1000),发生溢出无法表示。

       现在我们转而用补码的思路,溢出的数继续放到数轴上,把0,1000变成1,000放到数轴的最左端,依次加一1,001、1,010、1,011 … 1,111,共八个数。

       这里我们看到补码与原码相比只有一种“0”的表示形式,原码中的-0(1,000)在补码中表示-8。对于补码,我们按照模的思想,把四个比特位包括符号位表示的数全都一一映射了数轴上的数(1,000无符号数中表示8,也就是从数轴最左边的数看成无符号数依次是8、9、… 15),所以补码中的符号位,是参与加减运算的,并且由于其补数的性质,在二进制中“溢出”的高位舍去之后的数恰好是正确的数值(仅指正负补数相加。区别于真值溢出,此处不讨论)。

       小数负数的补码的模固定为2,小数补码比原码多表示一个-1(1,000)。

       根据定义公式,结合二进制数的性质,负数补码就等于原码的除符号位外的每位求反加一。反码很有趣,其实就是要用每个比特位都是1的数去和这个数进行运算,无论加减都会得到每位取反的结果。从数学形式上的定义来看,负数的原码是在最高位左边添了一个1,反码中的模就是补码的模最右端位减去1。

      

2、规律法

       根据“取反加一”结合二进制数的特性,根据原码求补码时可以选取另一种方法:从原码的最右端开始向左第一个不是0的位置开始(不含),每位取反。原理也很简单,取反加一之后,反码只会改变从右往左开始第一个不是1(含)的位。

      

       下面讨论负数补码的移位规则   

       移位操作可以提高二进制在计算机中的运算效率。这里讨论负数补码的移位规则,根据上文规律法中的结论,可知补码结合了原码和反码位的特点,其低位向高位找到的第一个1左边(不含)和反码相同右边(含)和原码相同。

       算术移位中符号位不变的前提下,   

       负数的原码左右移位都是缺位补0,丢失的位如果为1发生溢出出错或者精度丢失,和原码相反,负数的反码左右移位都是缺位补1,丢失的位如果为0发生溢出出错或者精度丢失。

       负数的补码情况结合原码和反码,左移时低位空出补0、高位丢0结果出错,右移时高位空出补1、低位丟1影响精度。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/221862.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午5:07
下一篇 2026年3月17日 下午5:07


相关推荐

  • 阅读书源最新2020在线导入_【授人以渔】你想要阅读的,这里都有。「建议收藏」

    阅读书源最新2020在线导入_【授人以渔】你想要阅读的,这里都有。「建议收藏」今天给大家分享两个阅读软件,安卓、ios都有。通过订阅大佬们制作的书源(小说网站),80%你想看的小说,都能找到。(只要网络上有人分享上传了)﹀﹀﹀一、阅读(安卓)1、下载链接:https://www.coolapk.com/apk/io.legado.app.release2、食用方法:方法一(网络导入):  复制源URL,打开阅读”订阅”->点击右上角设置->选择”…

    2022年6月15日
    67
  • Oracle的SGA

    Oracle的SGAOracle 的 SGA 区像很多数据库如 db2 mysql 等等都是关系型数据库 但是他们也有区别 区别就在数据库的架构上面 整个 Oracle 来讲就两个部分 一部分是实例 由两部分构成 一部分是里面的内存结构由 sga 和 Pga 构成 SGA 全称为 systemgloabl 系统全局区域 也就是说在 SGA 区里面放的是共享的 全部的人都可以看到的数据 只有这一类的数据会放到 SGA 区里面 PGA

    2026年3月16日
    1
  • 表白生成器PHP源码,表白网页在线生成源码[通俗易懂]

    表白生成器PHP源码,表白网页在线生成源码[通俗易懂]在520这个节日里面,很多人都开始了表白计划,对于那些不敢说出口的问题,就直接来此下载520表白网页一键生成软件,帮助你们直接生成最棒的表白页面,让你们增加成功的机会。520表白网页一键生成软件简介如果你喜欢她不能亲自向她说不如做个网页,把自己想说的话写进去,然后发个地址给她,里面添加她喜欢的音乐或者mv。不会做网页怎么办,没事。表白网页生成器帮助你!无需任何编程。一键生成,然后把生成在桌面的i…

    2022年5月21日
    37
  • sql2012安装错误代码0x84b10001_sql server 安装程序遇到以下错误

    sql2012安装错误代码0x84b10001_sql server 安装程序遇到以下错误followthebelowsteps: InWindows®Explorer,browsetothefollowingpath:C:\Windows\Microsoft.NET\Framework64\v2.0.50727\CONFIG\machine.config ImportantNote:Makeacopyofthemachine.c…

    2025年10月25日
    3
  • 网线的交叉线和直通线原理

    网线的交叉线和直通线原理转载自 http://yxy73622.blog.163.com/blog/static/1733173742012231114013341/正线(标准568B):两端线序一样,线序是:白橙,橙,白绿,蓝,白蓝,绿,白棕,棕。反线(568A):一端为正线的线序,另一端为:白绿,绿,白橙,蓝,白蓝,橙,白棕,棕。T568A标准连线顺序从左到右依次为:1-绿白、2-绿、3-橙白、4

    2022年6月19日
    32
  • idea2021最新激活码(注册激活)

    (idea2021最新激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~1STL5S9V8F-eyJsaWNlb…

    2022年3月27日
    629

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号