为什么带上符号位计算,仍然可以算出正负数对应的补码

请添加图片描述

文章目录

  • 🚀前言
  • 🚀 为什么要引入原反补码
    • ✈️ 利用加法表示减法
    • ✈️ 关于数字在计算机中的存储
    • 🚀 数学解释
  • 🚀 为什么带上符号位计算,仍然可以算出正负数对应的补码

🚀前言

为应付期末,速成数电,看到原反补码,不知道为啥计算结果仍然为补码,查了半天决定记录。

🚀 为什么要引入原反补码

因为对于数的加减运算,加法很容易但是减法很麻烦(硬件上实现),所以大佬们利用加法表示减法。下面我们来看具体如何操作:

✈️ 利用加法表示减法

我们用一个🌰来解释:

用两个 仅一位十进制数 演示:7-3=7+(-3)
实际上,7+(-3) 等于 7+(10 - 3) = 14。虽然 7+(10-3) 的结果为 14,但由于只有一位,所以高位 1 舍去,结果为 4,与 7-3=4 一致。
将这个结论推广到更多位或其他进制依然适用,比如用三位表示 155-123=155+(-123)=32,同样的 155+(1000-123)=1032,高位去掉结果仍然正确。
在计算机中就是这么算的,上面的过程相当于模拟了计算机计算的过程,只不过计算机使用二进制计算,舍去高位叫 溢出

✈️ 关于数字在计算机中的存储

上面利用 加法表示减法 的过程中用到了 减法,我们引入原反补码来解决这个问题。

在计算机中,我们利用二进制进行数字存储和计算。比如上述的例子 7-3=7+(-3)=7+(10-3) 中,我们眼中的 7-3,而在计算机眼中没有减法只有加法,所以计算机看到的是 7+(-3)
如何区分正负数?规则:正数最高位为0,负数最高位为1。
以有符号 int 类型为例,正数的最高位为0,负数的最高位为1。

为了避免减法,引入了反码和补码:

  • 反码:符号位不变,其他位按位取反。
  • 补码:反码加1。

🚀 数学解释

补码运算的数学基础可以用以下公式来解释:

  1. 对于正数 ( a ) (a) (a)

    • 补码:直接等于原码。
  2. 对于负数 ( − b ) (-b) (b)

    • 补码:等于 ( 2 n − b ) (2^n - b) (2nb)

在补码运算中,加法和减法通过以下方式处理:

a + ( − b ) = a + ( 2 n − b ) = ( a − b + 2 n ) m o d 2 n a + (-b) = a + (2^n - b) = (a - b + 2^n) \mod 2^n a+(b)=a+(2nb)=(ab+2n)mod2n

由于超出 (n) 位的部分被丢弃,最终结果在正确范围内。

🚀 为什么带上符号位计算,仍然可以算出正负数对应的补码

上面铺垫了这么多就是为了介绍这个终极问题,下面为大家解惑:

实际上,有了上面的基础,很好理解为什么符号位参与计算仍对。分为三种情况:正数与正数,负数与负数,负数与正数。但正数与正数和负数与负数不能发生溢出,这种溢出不被允许,所以只考虑正数与负数。
正数绝对值更大时,会进位到符号位,符号位再次进位溢出,然后符号位为0,结果为正数;负数绝对值更大时,不会发生溢出,符号位最后为1,结果为负数。

举例:

表示数值位有三位: a + (-b)
a = 101
b = 011
补码(-b) = 1000 - 0011 = 101
a + (-b) = a + 补码(-b) = 101 + 101 = 1010,a > b溢出到符号位,符号位进位然后结果为正
a = 011
b = 101
补码(-b) = 1000 - 0105 = 011
a + (-b) = a + 补码(-b) = 011 + 011= 110,a < b 没有溢出,符号位为1结果为负


如果帮到你,请帮我点个赞吧!

请添加图片描述

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

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

相关文章

基于PHP的奶茶商城系统

有需要请加文章底部Q哦 可远程调试 基于PHP的奶茶商城系统 一 介绍 此奶茶商城系统基于原生PHP开发&#xff0c;数据库mysql&#xff0c;ajax实现数据交换。系统角色分为用户和管理员。系统在原有基础上添加了糖度的选择。 技术栈 phpmysqlajaxphpstudyvscode 二 功能 用户…

CVE-2020-1957 漏洞复现

先声明一下&#xff0c;免杀还是会更的&#xff0c;不过中间可能会穿插一下渗透的内容&#xff01;&#xff01;&#xff01; 踩坑点&#xff1a; 在一开始翻阅了CSDN之后&#xff0c;发现不同文章之间存在出入&#xff0c;于是最后去了CVE的官方文档&#xff0c;和参考一些国…

【TB作品】MSP430G2553,单片机,口袋板, 交通灯控制系统

题8 交通灯控制系统 十字路口交通灯由红、绿两色LED显示器&#xff08;两位8段LED显示器&#xff09;组成&#xff0c;LED显示器显示切换倒计时&#xff0c;以秒为单位&#xff0c;每秒更新一次&#xff1b;为确保安全&#xff0c;绿LED计数到0转红&#xff0c;经5秒延时&#…

深度学习(十三)——损失函数与反向传播

一、损失函数&#xff1a;Loss Function 官网文档&#xff1a;torch.nn — PyTorch 2.0 documentation 1. Loss Function的作用 每次训练神经网络的时候都会有一个目标&#xff0c;也会有一个输出。目标和输出之间的误差&#xff0c;就是用\(Loss\) \(Function\)来衡量的。所以…

UniAudio 1.5:大型语言模型(LLMs)驱动的音频编解码器

大型语言模型&#xff08;LLMs&#xff09;在文本理解和生成方面展示了卓越的能力&#xff0c;但它们不能直接应用于跨模态任务&#xff0c;除非进行微调。本文提出了一种跨模态上下文学习方法&#xff0c;使未进行进一步训练的LLMs能够在少量示例的情况下&#xff0c;无需任何…

【吊打面试官系列-Mysql面试题】Myql 中的事务回滚机制概述 ?

大家好&#xff0c;我是锋哥。今天分享关于 【Myql 中的事务回滚机制概述 ?】面试题&#xff0c;希望对大家有帮助&#xff1b; Myql 中的事务回滚机制概述 ? 事务是用户定义的一个数据库操作序列&#xff0c;这些操作要么全做要么全不做&#xff0c;是一个不可分割的工作单位…

CSS3基本语法

文章目录 一、CSS引入方式二、选择器1、标签选择器2、类选择器3、id选择器4、通配符选择器 三、字体操作1、字体大小2、字体粗细3、字体样式&#xff08;是否倾斜&#xff09;4、字体修改常见字体系列 修改字体系列语法 四、文本操作1、文本缩进2、文本水平对齐方式3、文本修饰…

进阶篇05——存储过程、存储函数、触发器

存储过程 简介 基本语法 创建和调用 -- 创建名为p1的存储过程&#xff0c;小括号里可以跟参数 -- 存储过程个人觉得就是SQL里的函数 create procedure p1() begin-- begin 和 end 之间是封装的SQL语句-- 可以是一条SQL也可以是多条SQLselect * from student; end;-- 调用存储…

c++中string的用法

STL的简介 一.什么是STL二.STL的六大组件2.1仿函数2.2空间配置器2.3 算法2.4 迭代器2.5容器2.6配置器 三.string类3.1string类3.2string类的常用接口说明代码示例运行结果 3.3string类对象的容量操作代码示例sizelengthcapcityempty resizereverse 3.4string类对象的访问及遍历…

今年618各云厂商的香港服务器优惠活动汇总

又到了一年618年中钜惠活动时间&#xff0c;2024年各大云服务器厂商都有哪些活动呢&#xff1f;有哪些活动包括香港服务器呢&#xff1f;带着这些问题&#xff0c;小编给大家一一讲解各大知名厂商的618活动有哪些值得关注的地方&#xff0c;如果对你有帮助&#xff0c;欢迎点赞…

2024年6月19日 (周三) 叶子游戏新闻

超市播音系统: 定时播放不同音乐 强制卸载软件: 一款强制卸载软件 人气漫改《忍者杀手》动作游戏7月24日登陆Switch角川游戏日前宣布&#xff0c;旗下人气漫改动作游戏《忍者杀手&#xff1a;火烧新琦玉》将于7月24日登陆Switch&#xff0c;本作已经上架Steam&#xff0c;感兴趣…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 部门组队编程(200分) - 三语言AC题解(Python/Java/Cpp)

&#x1f36d; 大家好这里是清隆学长 &#xff0c;一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 &#x1f4bb; ACM银牌&#x1f948;| 多次AK大厂笔试 &#xff5c; 编程一对一辅导 &#x1f44f; 感谢大家的订阅➕ 和 喜欢&#x1f497; &#x1f…

亚特全球链锯文化推广大使活动盛大启航

&#xff08;本台记者报&#xff09;链锯&#xff0c;这一象征着力量与技艺的工具&#xff0c;自诞生以来便见证了人类工业文明的进步。从最初的简易链锯到如今的多功能锂电链锯&#xff0c;彰显了人类对于技艺与科技的追求&#xff0c;其演变历程不仅映射出人类科技的巨大飞跃…

《软件定义安全》之七:SDN安全案例

第7章 SDN安全案例 1.DDoS缓解 1.1 Radware DefenseFlow/Defense4All Radware在开源的SDN控制器平台OpenDaylight&#xff08;ODL&#xff09;上集成了一套抗DDoS的模块和应用&#xff0c;称为Defense4ALL。其架构如下图&#xff0c;主要有两部分&#xff1a;控制器中的安全…

【Pytorch】一文向您详细介绍 model.eval() 的作用和用法

【Pytorch】一文向您详细介绍 model.eval() 的作用和用法 下滑查看解决方法 &#x1f308; 欢迎莅临我的个人主页 &#x1f448;这里是我静心耕耘深度学习领域、真诚分享知识与智慧的小天地&#xff01;&#x1f387; &#x1f393; 博主简介&#xff1a;985高校的普通本硕…

数据结构之探索“队列”的奥秘

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a;数据结构&#xff08;Java版&#xff09; 目录 队列有关概念 队列的使用 队列模拟实现 循环队列的模拟实现 622. 设计循环队列 双端队…

C++ 84 之 文件读写

#include <iostream> #include <cstring> #include <string> using namespace std; #include <fstream> // 文件流的头文件int main() {// 写入: 文件内容// (文件位置&#xff0c; 如果这个不存在&#xff0c; 就新建一个)// 写法1&#xff1a; of…

深度学习项目十六:根据训练好的权重文件推理图片--YOLO系列

文章目录 根据训练好的权重文件推理图片--YOLO系列一、自己构建YOLOv5推理代码1.1 对数据集进行模型训练1.2 对数据集进行模型推理检测1.3 自己编写推理函数1.3.1 针对单张进行推理1.3.2 针对文件夹下的图片进行推理二、自己构建YOLOv8推理代码2.1 对数据集进行模型训练2.2 对数…

安装pytorch环境

安装&#xff1a;Anaconda3 通过命令行查显卡nvidia-smi 打开Anacanda prompt 新建 conda create -n pytorch python3.6 在Previous PyTorch Versions | PyTorch选择1.70&#xff0c;安装成功&#xff0c;但torch.cuda.is_available 返回false conda install pytorch1.7.0…

报表工具数据源的取数处理方式大对比

根据报表的需求&#xff0c;很多报表中的指标数据需要进行预处理&#xff0c;以满足快速抽取和展示的需要。对于帆软报表类似的产品&#xff0c;一般通过建立视图、合并数据表&#xff0c;形成直接应用于模板设计的数据集&#xff0c;报表直接和数据集进行交互、关联。当用户发…