溢出标志位OF与进位标志位CF判断
1、OF与CF概述
- OF(Overflow Flag,溢出标志位):有符号数之间加减运算的溢出标志
- CF(Carry Flag,进位标志位):无符号数之间加减运算的溢出标志
- 快速判断(加法)(减法可转换为加法)
- 有符号数的符号位进位和最高位进位不同时,OF=1,否则OF=0(记忆:0+0必然不溢出,此时符号位和最高位的进位相同,均为0)
- 无符号数的最高位进位为1时,CF=1,否则CF=0
- 对有符号数而言,
- 同号相减,不溢出,OF=0
- 异号相加,不溢出,OF=0
- 对无符号数而言,
- 大减小,不溢出,CF=0
- 小减大,溢出,CF=1
- 注意
- 二进制数的加减运算会导致OF和CF变化
- 原因:整数的加减运算没有本质上的不同,都是二进制数字间进行加减运算
- 虽然说OF是与有符号数有关,但无符号数进行运算时,OF也会被改变,但此时OF无意义,没人在乎他
- 同理,有符号数运算时,CF也会相应发生变化,我们也不关心CF的变化
- 二进制数的加减运算会导致OF和CF变化
- 小tips
- 减法转换为加法,直接用二进制算,从而可方便地判断溢出:[x]补-[y]补=[x]补+[-y]补
2、OF
- 加法判断
- 异号数相加,必然不溢出,OF=0
- 十进制:两有符号数相加,结果溢出,则OF=1,否则OF=0
- 溢出:结果超过该数据类型的表示范围,一般为-2n-1~2n-1-1,n为有符号整数的位数
- 二进制:同号有符号数相加,若结果与它们符号不同,则OF=1,否则OF=0
- 减法判断
- 同号数相减,必不溢出
- 十进制:若有符号数相减,结果溢出,则OF=1,否则OF=0
- 溢出:结果超过该数据类型的表示范围,一般为-2n-1~2n-1-1,n为有符号整数的位数
- 二进制:异号有符号数相减,结果与被减数符号不同,则OF=1,否则OF=0
3、CF
- 加法判断
- 十进制:两无符号数相加,结果溢出,则CF=1,否则CF=0
- 溢出:结果超过该数据类型的表示范围,一般为0~2n-1,n为无符号整数的位数
- 二进制:无符号数的最高位进位为1时,CF=1,否则CF=0
- 十进制:两无符号数相加,结果溢出,则CF=1,否则CF=0
- 减法判断
- 十进制:两无符号数相减,结果溢出,则CF=1,否则CF=0
- 溢出:结果超过该数据类型的表示范围,一般为0~2n-1,n为无符号整数的位数
- 简化判断:被减数小于减数字,如6-9,溢出
- 二进制:两无符号数字相减,最高位发生借位,则CF=1,否则CF=0
- 十进制:两无符号数相减,结果溢出,则CF=1,否则CF=0
溢出标志位OF与进位标志位CF判断的更多相关文章
- 对所有CPU寄存器的简述(16位CPU14个,32位CPU16个)
32位CPU所含有的寄存器有:4个数据寄存器(EAX.EBX.ECX和EDX)2个变址和指针寄存器(ESI和EDI)2个指针寄存器(ESP和EBP)6个段寄存器(ES.CS.SS.DS.FS和GS)1 ...
- PIC单片机状态寄存器中的C(进位/借位位标志)
查阅PIC单片机芯片手册,关于进位/借位位的说明为: C:进位/借位位. 1 = 结果的最高位发生了进位 0 = 结果的最高位未发生进位 同时有一条标注:借位的极性是相反的. 通过以上说明,可以将C的 ...
- 传输层的端口与TCP标志中的URG和PSH位
一.协议端口号的提出 运输层提供了进程间通信的能力(即端-端通信).但是不同的操作系统可能无法识别其他机器上的进程.为了用统一的方法对 TCP/IP体系的应用进程进行标志,使运行不同操作系统的计算机的 ...
- Leetcode2--->链表中对应位相加(进位)
题目: 给定两个单链表,单链表中的数都是非负数.链表中的数字都是反向存储的,,每个节点都是个位数,将链表对应的位相加,返回最终的结果: 举例: Input: (2 -> 4 -> 3) + ...
- 64位系统上运行32位程序能否申请到8G内存?
申请不到,因为64为系统在运行32位程序的时候只是为了向下兼容而已,对于32位程序来讲,申请8G的存储空间没有任何意义,因为32位的程序最大寻址空间只有4G,32位程序在编译之后的机器代码也只有32位 ...
- VS2010在64位系统中连接64位Oracle出现的问题和解决方法
C#使用System.Data.OracleClient连接Oracle数据库.我的是window7/64位系统,装了一个64位的oralce 11G r2 客户端是64位的 用VS10调试错误信息如 ...
- 在64位Windows7上安装64位Oracle11g
我一直在用Oracle10g数据库,最近想看看11g怎么样,就试着装了一下,在安装过程中遇到的麻烦还不少,幸好有搜索引擎,根据前辈的指点,磕磕绊绊地也将Oracle装上了,作一下记录,以后也许能用得着 ...
- 如何在64位windows7上同时使用32位和64位的Eclipse
我用的是64位的windows7旗舰版,jdk1.7 64位机器上可以同时运行32位和64位的Eclipse,但是电脑中必须有相应的jdk.Eclipse虽然不需要安装,但是在启动时会检查系统中固定文 ...
- CLR调试报错“Visual Studio远程调试监视器 (MSVSMON.EXE) 的 64 位版本无法调试 32 位进程或 32 位转储。请改用 32 位版本”的解决
Win7 64位电脑上进行visual studio的数据库项目的CLR存储过程进行调试时,报错: ---------------------------Microsoft Visual Studio ...
- 64位系统下注册32位dll文件
64位系统下注册32位dll文件 在64位系统里注册32位软件所需的一些dll会提示不兼容,大概因为32 位进程不能加载64位Dll,64位进程也不可以加载32的导致. 若要支持的32 位和64 位C ...
随机推荐
- python注释、变量、数据类型详细
目录 1.python注释 2.PEP8规范 3.变量与常量 1.python中的变量 2.变量名的命名规范 3.常量的基本使用 1.python注释 什么是注释? 注释是对代码的解释说明,写注释是为 ...
- 《HTTP权威指南》– 7.缓存
Web缓存的概念 Web缓存是可以自动保存常见文档副本的HTTP设备. 使用缓存的优点: 减少了数据的数据传输,节省了网络费用: 缓解了网络瓶颈的问题,不需要更多的带宽就能更快地加载页面: 降低了原始 ...
- [Webcast]Silverlight探秘系列课程
Silverlight探秘系列课程(1):创建第一个Silverlight应用视频:http://download.microsoft.com/download/B/7/1/B71CA32C-163D ...
- uni框架引入外部图标
说明 在使用uni框架的uni-nav-bar自定义导航栏的时候我想要引用外部的图标,但是似乎这个好像只能引入uni框架内置的图标 所以我只能把uni的图标进行增加处理,这样引入图标的方式就和正常的引 ...
- 15、MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transaction
转载自 一.报错信息: Error updating database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollback ...
- [OpenCV实战]15 基于深度学习的目标跟踪算法GOTURN
目录 1 什么是对象跟踪和GOTURN 2 在OpenCV中使用GOTURN 3 GOTURN优缺点 4 参考 在这篇文章中,我们将学习一种基于深度学习的目标跟踪算法GOTURN.GOTURN在Caf ...
- 2022USACO-DEC-Silver
题目链接 T1.Barn Tree T2.Circular Barn T3.Range Reconstruction T1 下面均以\(1\)为根来进行分析. 算法思路: 首先,定义一个数组dis表示 ...
- Redux与前端表格施展“组合拳”,实现大屏展示应用的交互增强
Redux 是 JavaScript 状态容器,提供可预测化的状态管理.它可以用在 react.angular.vue 等项目中, 但与 react 配合使用更加方便一些. Redux 原理图如下,可 ...
- 克拉玛依初赛-wp
MISC 签到 16进制转字符串 base64 再来一次base64 flag 论禅论道 7z解压得到jar 使用decom打开 解密 得到flag WEB pingme 抓包,修改POST提交的参数 ...
- Flutter新版本2.X系列--01创建项目
1.新建项目,打开Android studio,点击红圈部分 2.选择第一个 3.设置你的项目名称,flutter sdk位置,以及项目存储路径 4.设置包名,这个要唯一 5.好啦 ~ 作为一名前端开 ...