溢出标志位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 ...
随机推荐
- 云知声: 基于 JuiceFS 的超算平台存储实践
云知声从一家专注于语音及语言处理的技术公司,现在技术栈已经发展到具备图像.自然语言处理.信号等全栈式的 AI 能力,是国内头部人工智能独角兽企业.公司拥抱云计算,在智慧医疗.智慧酒店.智慧教育等方面都 ...
- 比Sqoop功能更加强大开源数据同步工具DataX实战
@ 目录 概述 定义 与Sqoop对比 框架设计 支持插件 核心架构 核心优势 部署 基础环境 安装 从stream读取数据并打印到控制台 读取MySQL写入HDFS 读取HDFS写入MySQL 执行 ...
- Maven多模块管理
项目的目录结构: 一.创建父工程的必须遵循以下两点: 1.packaging标签的文本内容必须设置为pom 1 <?xml version="1.0" encoding=&q ...
- 【转载】SQL SERVER 通过对汉字、字母和数字的Unicode码区间的判断来识别字符串
A~Z :65~90 a~z :97~122 0-9 : 48-57 –汉字unicode编码范围:[0x4e00,0x9fa5](或十进制[19968,40869]) SELECT * FR ...
- [python] NetworkX实例
文章目录 NetworkX实例 1. 基础Basic 2. 绘图Drawing 3. 图标Graph NetworkX实例 代码下载地址 NetworkX 2.4版本的通用示例性示例.本教程介绍了约定 ...
- [Unity]Update()与FixedUpdate()
Update()介绍 首先我们从官方文档的介绍了解: MonoBehaviour.Update() Description Update is called every frame, if the M ...
- Axure 环境进度条
步骤一:拖拉摆放好相关控件 1.4个半圆环,一个白色上半圆环 (上白),一个白色下半圆环 (下白),一个灰色上半圆环 (上灰),一个灰色下半圆环 (下灰),排放层次为: 下灰<下白<上灰& ...
- Ubuntu 安装播放器
安装 VLC sudo snap install vlc snap 下载慢的看这里https://www.cnblogs.com/Ahtelek/p/ubuntu-snap.html
- 图文并茂--微信小程序,获取用户地理位置信息,并调用腾讯地图API来获取用户具体位置
今天开始搞这个东西,下面是详细的记录 先看一下效果啦 1.小程序代码先获取用户基础位置信息 js data: { myLocation: 'GET LOCATION', }, openMap() { ...
- BC7-牛牛的字符矩形
题目描述 牛牛尝试用键盘读入一个字符,然后在屏幕上显示用这个字符组成的 3*3 的矩形. 输入描述 一行读入一个 char 类型的字符. 输出描述 输出这个字符组成的 3*3 矩形. 示例 1 输入: ...