CPU如何区分溢出和自然进位?

之前学习补码的时候倒是学会了基本概念,但是最近又接触时发现还有不清楚的地方,所以又研究了下

今天的核心问题的“CPU是如何区分高位自然舍弃和溢出的?

先给出结论:如果运算中,数值位最高位(也就是有符号数的正数第二位)和符号位(也就是正数第一位)同时进位,则是自然舍弃。两者间如果只有一个进位,则是溢出。

下面来讲解一下。运算的所有情况可以划分为四种:

  1. 符号位进位,数值最高位不进位
  2. 符号位不进位,数值最高位进位
  3. 符号位和数值最高位都进位
  4. 符号位和数值最高位都不进位

对于第四种情况,就没什么好说了,都不进位的话根本涉及不到区分的问题。

对于第一种和第二种情况都好理解:对于第一种情况,既然数值最高位没有进,那么符号位的进位就一定是完全由符号位导致的,也就是说符号位一定是两个1,那么这样进位的结果就是符号位为0——两个负数加法运算结果为正数,当然是溢出了。第二种也是同理,数值最高位进位了而符号位没有进,只能说明原来符号位是两个0,那么就是两个正数相加结果为负数,溢出无疑了。

比较复杂一点的是情况3,它又可以细分为:

  1. 两个数符号位都是1
  2. 一个数符号位为1,另一个是0

要讲清楚这里的内容,我们要了解一下究竟什么是溢出?我们以4位二进制数为例,它的表示范围是[-8,7]。注意,溢出是结果错误,但不是二进制加法本身有错误,我们所说的溢出,是指在对二进制加法的结果进行截取后,截取的结果和算术运算的结果不符,而造成溢出的原因就是计算的结果超出能表示的范围。而对于情况2,一个正确表示的正数和一个正确表示的负数相加,结果一定是不会超出表示范围的,这里的进位就只能是自然进位。对于1,两个负数相加什么情况下才会溢出呢?就是超出表示范围的情况,而对于负数,除了符号位之外,数值位0越多数就越小。在1的前提下,能找到的最小的负数就是1010和1110,其分别是-6和-2,加起来正好是-8不超范围。所以这种情况也被证明了不会溢出了。

综上,我们证明了只有在符号位和数值最高位两个里面只有一个进位的时候才是溢出,依次为据我们就可以设计CPU指令了。

CPU如何区分溢出和自然进位?的更多相关文章

  1. 8086 CPU 寄存器简介

    转载:http://www.cnblogs.com/BoyXiao/archive/2010/11/20/1882716.html 引子 打算写几篇稍近底层或者说是基础的博文,浅要介绍或者说是回顾一些 ...

  2. [转帖]8086 CPU 寄存器简介

    8086 CPU 寄存器简介 https://www.cnblogs.com/BoyXiao/archive/2010/11/20/1882716.html 哎 没看完 感觉好复杂. 引子 打算写几篇 ...

  3. (转)计算机原理学习(1)-- 冯诺依曼体系和CPU工作原理

    原文:https://blog.csdn.net/cc_net/article/details/10419645 对于我们80后来说,最早接触计算机应该是在95年左右,那个时候最流行的一个词语是多媒体 ...

  4. 计算机原理学习(1)-- 冯诺依曼体系和CPU工作原理

    前言 对于我们80后来说,最早接触计算机应该是在95年左右,那个时候最流行的一个词语是多媒体. 依旧记得当时在同学家看同学输入几个DOS命令就成功的打开了一个游戏,当时实在是佩服的五体投地.因为对我来 ...

  5. 如何迅速分析出系统CPU的瓶颈在哪里?

    内容出自极客时间专栏<Linux 性能优化实战> CPU 的性能指标那么多,CPU 性能分析工具一抓一大把,换成实际的工作场景,该观察什么指标.选择哪个性能工具呢? 不要担心,今天我就以多 ...

  6. WinDbg调试CPU占用高的问题 试验+实战 《第七篇》

    一.High CPU试验 1.示例代码 static void Main(string[] args) { Console.Clear(); Console.WriteLine("到命令行下 ...

  7. linux下cpu物理个数、多核、超线程判断解析

    在Linux体系中,供给了proc文件体系显示体系的软硬件信息.若是想懂得体系中CPU的供给商和相干设备信息,则可以经由过程/proc/cpuinfo文件获得.本文章针对该文件进行简单的总结. 基于指 ...

  8. tf.device()指定tensorflow运行的GPU或CPU设备

    在tensorflow中,我们可以使用 tf.device() 指定模型运行的具体设备,可以指定运行在GPU还是CUP上,以及哪块GPU上. 设置使用GPU 使用 tf.device('/gpu:1' ...

  9. cpu的核数

      相信大多数的人都知道CPU区分单核.双核.四核.六核.八核等,一些电脑小白肯定认为核心越多肯定性能越强,但是不少装机用户发现,有的CPU型号虽然是双核,但是要比一些四核还要贵,很多人感到迷惑,那么 ...

随机推荐

  1. 邻居子系统 之 更新neigh_update

    概述 neigh_update函数用来更新指定的邻居项,更新内容是硬件地址和状态,更新之后,会根据新状态设置其输出函数,CONNECTED状态则使用快速输出,否则使用慢速输出:如果是由原来的无效状态变 ...

  2. 域名与服务器 ip地址的理解

    域名 服务器 ip地址具有怎样的关系呢 通俗的讲,我们访问一个网站就相当于访问一个服务器的文件,如果想要通过自己的域名来访问一个网站,首先得将域名部署到你的服务器上,然后就可以通过域名访问到你服务器上 ...

  3. 微信小程序之条件判断

    前文: 今天踩了一下午的坑,但是确实很简单的问题. 我说一下需求:扫描商品的二维码,从而判断,同一个二维码不可多次扫描: 点击扫一扫 会在灰色区域展示 扫描的商品信息,比如商品名称,商品码等,但是我们 ...

  4. SQL Server分页的存储过程写法以及性能比较

    ------创建数据库data_Test ----- create database data_Test GO use data_Test GO create table tb_TestTable - ...

  5. LC 274. H-Index

    Given an array of citations (each citation is a non-negative integer) of a researcher, write a funct ...

  6. Linux 关机/重启命令

    Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE MicrosoftInternetExplorer4 /* Style Definiti ...

  7. 阶段3 3.SpringMVC·_03.SpringMVC常用注解_5 RequestHeader注解

  8. 【汇总】数据库提权(mysql、mssql)

    日期:2018-04-03 11:46:45 作者:Bay0net 介绍:利用 mssql 的 sa 账号提权.利用 MySQL 的 UDF 提权 0x01.mssql 提权 恢复 xp_cmdshe ...

  9. lab 颜色模式的生理原因 黄色, 洋红色 刺眼。 绿色,蓝色,不刺眼。

    hsb 颜色模式理解了. lab 颜色模式,都说是生理原因.没说是啥生理原因. 猜测:黄色, 洋红色 刺眼.   绿色,蓝色,不刺眼. https://blog.csdn.net/self_mind/ ...

  10. ios8唤不起APP的问题

    https://stackoverflow.com/questions/27526966/ios-8-window-location-href-doesnt-work-with-url-scheme ...