【总结】补码在运算中溢出的情况(单符号位补码+双符号位补码)

news/2024/7/27 8:41:26/文章来源:https://blog.csdn.net/m0_57050876/article/details/136516537

总结补码在运算中溢出的情况
在此默认补码为有符号数
A.单符号位补码
【规律通用】不同则溢出
(一)移位运算
补码右移不会溢出,仅左移时可能溢出
【实操方法】看补码的高2位直接出结果:若高2位数(即符号位和最高数位)不相同[01或10],则左移会溢出(否则不溢出)

(二)加减运算
补码减法转为加法,后用补码加法的判断溢出方法,如下
【实操方法】(1)直接看两数符号和±
若 ①2个同号数相减 或②2个异号数相加
则一定不溢出(否则可能溢出)
(2)符号位与数值位分别求和,看符号位与最高数位的进位值,若这2个值不相同[01或10],则溢出(否则不溢出)

B.双符号位补码(变形补码/模4补码)
【核心逻辑】看双符号的运算结果的2个符号位是否相同,若不同[01或10]则溢出;否则不溢出
(一)移位运算
(1)【铺垫】①双符号位补码的算术移位规则:仅低符号位参与移位。其余同单,正补码补0;负补码左移补0,右移补1
②双符号位补码用00表示正数,11表示负数,且高符号位永远代表真正的符号位
③运算结果为01为正溢出,10为负溢出

(2)双符号位补码移位的判断溢出方法
【实操方法】对双符号位补码进行移位,结果也有2个符号位,若这2个符号位不同[01或10],则溢出(否则不溢出),此时最高位符号位代表真正的符号

(二)加法运算
(1)【铺垫】双符号位补码加法规则
①2个符号位也参加运算
②高位符号位产生的进位直接丢弃
【注意:符号位的进位与溢出之间无直接关系!】

(2)双符号位加法判断溢出方法
【实操方法】2个双符号位补码相加,运算结果也有2个符号位,若这2个符号位不同[01或10],则溢出(否则不溢出),此时最高位符号位代表真正的符号

双符号位补码的算术右移,好像也不会溢出,下面是关于此的解释

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_996226.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从 Language Model 到 Chat Application:对话接口的设计与实现

作者:网隐 RTP-LLM 是阿里巴巴大模型预测团队开发的大模型推理加速引擎,作为一个高性能的大模型推理解决方案,它已被广泛应用于阿里内部。本文从对话接口的设计出发,介绍了业界常见方案,并分享了 RTP-LLM 团队在此场景…

bug_java

文章目录 1.创建Maven时: idea报错为:java:错误:不支持发行版本52. Springbot启动报错-类文件具有错误的版本 61.0, 应为 52.0 1.创建Maven时: idea报错为:java:错误:不支持发行版本…

golang中go build 后读取配置文件

golang打包后读取配置文件 在用go写代码的时候,为了好用经常使用go build 打包,如果我们用到了配置文件,就总是导致不能找到文件所在位置了出现bug,所以以下代码就解决了这个问题。 核心代码: file, err : exec.Look…

Android使用Sensor.TYPE_STEP_COUNTER计步器传感器进行步数统计

1、首先,申请权限 必须声明 ACTIVITY_RECOGNITION 权限,以便您的应用在运行 Android 10 (API 级别 29) 或更高版本的设备上使用此传感器。 Manifest.xml也记得声明 if (Build.VERSION.SDK_INT > Build.VERSION_CODES.P) {Log.d(TAG, "[权限]&quo…

Nodejs 第五十章(lua的基本使用)

lua基本使用 全局变量局部变量 全局变量是在全局作用域中定义的变量,可以在脚本的任何地方访问。全局变量在定义时不需要使用关键字,直接赋值即可。 xiaoman xmzsprint(xiaoman)局部变量是在特定作用域内定义的变量,只能在其所属的作用域…

UVa11595 Crossing Streets EXTREME

题目链接 UVa11595 - Crossing Streets EXTREME 题意 平面上有 n(n≤35)条直线,各代表一条街道。街道相互交叉,形成一些路段(对应于几何上的线段)。你的任务是设计一条从A到B的路线,使得穿过路…

VS code下载与使用方法(包含远程调试)

Visual Studio Code(简称 VSCode)是由微软开发的一款免费、开源、跨平台的现代化轻量级代码编辑器。它具有丰富的功能和强大的扩展性,适用于多种编程语言和开发环境。以下是 VSCode 的一些主要特点和功能: 跨平台支持: 可在 Windows、macOS 和 Linux 等多种操作系…

解决MySQL 5.7在Redhat 9中启动报错:libncurses.so.5和libtinfo.so.5缺失问题

在使用Linux系统搭建MySQL数据库的过程中,我们往往会遇到各种依赖库的问题,尤其是在安装较旧版本的MySQL时。最近,在RedHat 9(rocky linux 9)系统上安装MySQL 5.7版本时,我遇到了一个典型的依赖库缺失错误&…

[项目设计] 从零实现的高并发内存池(四)

🌈 博客个人主页:Chris在Coding 🎥 本文所属专栏:[高并发内存池] ❤️ 前置学习专栏:[Linux学习] ⏰ 我们仍在旅途 ​ 目录 6.内存回收 6.1 ThreadCache回收内存 6.2 CentralCache回收内存 Rele…

CVE-2024-25600 WordPress Bricks Builder RCE-漏洞分析研究

本次代码审计项目为PHP语言,我将继续以漏洞挖掘者的视角来分析漏洞的产生,调用与利用..... 前方高能,小伙伴们要真正仔细看咯..... 漏洞简介 CVE-2024-25600 是一个严重的(CVSS 评分 9.8)远程代码执行 (RCE) 漏洞&am…

AXI4总线解析

一、读地址 AWVALID和AWREADY同时为高时,在这个上升沿,图中黄线,将接下来的数据写入地址40000000中。 在

FPGA 的 DSP:Verilog 中的简单 FIR 滤波器

本项目介绍如何用 Verilog 实现一个带有预生成系数的简单 FIR 滤波器。 Things used in this project 、 Story 简陋的 FIR 滤波器是 FPGA 数字信号处理中最基本的构建模块之一,因此了解如何利用给定的抽头数和相应的系数值组装一个基本模块非常重要。因此&#xf…

CCF-A推荐会议 安全界顶会ACM CCS‘24 4月29日第二轮投稿!共建更安全的数字世界!

会议之眼 快讯 第31届ACM CCS (ACM Conference on Computer and Communications Security)即计算机和通信安全会议将于 2024 年 10月14日-18日在美国盐湖城举行!CCS是美国计算机协会(ACM)安全、审计与控制特别兴趣小组(SIGSAC)主办的一年一度的重要会议。是SIGSAC的…

java在cmd中乱码的问题解决

本文深入探讨了在使用 Java 命令行(cmd)时可能出现的中文乱码问题,并提供了两种解决方案。首先,通过临时的方式,用户可以执行命令 chcp 936 选择字符集,然后再运行 Java 命令,确保在选择字符集过…

Kakarot:当今以太坊的未来

1. 引言 前序博客: Kakarot:部署在Starknet上的ZK-EVM type 3 随着 Kakarot zkEVM 即将发布测试网,想重申下 Kakarot zkEVM 的愿景为: 为什么在rollup空间中还需要另一个 zkEVM? 开源代码见: https:/…

现代分布式系统架构的权衡分析

介绍 现代软件系统,特别是遵循分布式架构的系统,以其复杂性和可变性而闻名。这些系统由许多元素组成,每个元素都引入潜在的权衡,可能影响成本、性能、可伸缩性和可靠性等因素。对于导航软件现代化和转型领域的IT架构师、业务分析师…

MyBatis3源码深度解析(四)Statement

文章目录 前言2.4 Statement2.4.1 java.sql.Statement2.4.1.1 创建Statement对象2.4.1.2 执行查询SQL语句2.4.1.3 执行更新SQL语句2.4.1.4 执行不确定类型的SQL语句2.4.1.5 批量执行SQL语句 2.4.2 java.sql.PreparedStatement2.4.2.1 创建PreparedStatement对象2.4.2.2 占位符的…

centos7中python3.10找不到openssl解决方案

如果有用其他方法安装了其他版本openssl,记得卸载其他的openssl,删除其他的openssl相关文件。 yum remove openssl* rm -rf ***下载最新版的openssl文件 按照官网安装方法安装openssl 官方安装地址https://docs.python.org/3/using/unix.html#on-linu…

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:RotationGesture)

用于触发旋转手势事件,触发旋转手势的最少手指为2指,最大为5指,最小改变度数为1度。 说明: 从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 接口 RotationGesture(value?: …

SQL Server基础指令(创建与检索)

数据库demo 数据库RUNOOB 表Websites 元素: 创建 创建数据库 create database xxx Create database school 创建数据表 create table xxx create table student 数据表插入记录 insert into 第一种形式无需指定要插入数据的列名,只需提供被插入的…