对于补码的个人理解

1. 十进制的取模计算

在这里插入图片描述
现在我想要使另一个数加上2后用8取模后也等于1,这个数可以是哪些?
这个问题比较简单,只需要-1加上8的倍数即可
例如:
在这里插入图片描述
如果我们想要得到距离-1这个负数最近的一个正数7,直接使用-1+8即可。反过来想,其实可以理解成8减去-1的绝对值,如下图:
在这里插入图片描述
为什么要得到7这个数呢?而不是15,23等等这些-1加上8的倍数的数呢?这里透露一点,一正一负,刚好互补,具体原因后面会说明。在此我们可以把7看作-1的补码(补码只是一个名字而已)。

2.类比十进制取模计算到二进制

为了与前面的例子一致,假设现在我所使用的二进制的位数为3,并且是有符号数,所有的数如下:
在这里插入图片描述
接下来进行类比十进制的计算到二进制中:
在这里插入图片描述
此处这里的计算就奇怪了,为什么二进制这样计算得到的结果与十进制得到的结果不一样呢?具体原因在第3小节会解释。

此时我们先来类比第一小节中加上模长后的计算:
计算距离-1最近的一个正数:
在这里插入图片描述
此处的1000是为了类比8这个数,虽然在3位的有符号数中不能表示1000,但是我们可以假设这个数是存在的。

在这里插入图片描述
从这个地方可以看出,我们得到的二进制计算结果和十进制计算结果相同。

3.二进制中令人迷惑的一点

相信此时会有这样的问题出现:
为什么之前二进制和十进制直接计算到结果不同,但是对二进制和十进制求补码后的计算结果就相同了?
在这里插入图片描述
在我个人的理解中,我认为问题的关键之处在于对二进制的有符号数的正负号规定上,如果我们在有符号dd二进制数中,不使用0表示正数,1表示为负数,而是使用+表示正数,-号表示负数这样的计算会不会使结果变得正常呢?
类似这样:
在这里插入图片描述
接下来进行计算:
在这里插入图片描述
从这样的结果来看,十进制和二进制的结果是相同的。同时也证明了,二进制的有符号数计算之所以与十进制与十进制计算到结果不同的原因就在于这里的正负号。

那再具体一点的解释呢?因为我们知道,在计算机中只有01这样的两个数,无法像现实中直接使用+和-表示正负号。而如果直接使用1和0表示符号的话,在计算时,它们也会参与计算,其中0并不会影响计算,但是1会影响计算。因此在计算时,负数都会先转换成补码,然后再进行计算。

那为什么补码计算的结果就正确呢?这里留个伏笔,大佬也可以在评论区解释一下。


以上内容仅个人理解,如果有哪些说得不对的地方,在此提前感谢大佬请指正。

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

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

相关文章

C# WinForm —— 36 布局控件 GroupBox 和 Panel

1. 简介 两个可以盛放其他控件的容器,可以用于把不同的控件分组,一般不会注册事件 GroupBox:为其他控件提供可识别的分组。可通过Text属性设置标题;有边框;没有滚动条,一般用于按功能分组 Panel&#xff…

白酒:中国的酒文化的传承与发扬

中国,一个拥有五千年文明史的国度,其深厚的文化底蕴孕育出了丰富多彩的酒文化。在这片广袤的土地上,酒不仅仅是一种产品,更是一种情感的寄托,一种文化的传承。云仓酒庄的豪迈白酒,正是这一文化脉络中的一颗…

CentOS系统自带Python2无法使用pip命令

Linux运维工具-ywtool 目录 一. 系统环境二.解决三.验证四.备注(1)输入"yum install -y python-pip",提示没有可用 python-pip包(2)安装完pip后进行升级 一. 系统环境 centos7系统自带的python2.7无法使用pip命令 二.解决 yum install python-pip -y三.验证 pip…

Go 并发控制:RWMutex 实战指南

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

three.js纹理贴图褪色失真问题解决

网上查的都是加encoding配置,但是最新版本,纹理对象属性名.encoding已经变更为.colorSpace // 纹理贴图加载器 const texLoader new THREE.TextureLoader(); const texture texLoader.load("./test.jpg"); texture.colorSpace THREE.SRGBC…

Building wheels for collected packages: mmcv, mmcv-full 卡住

安装 anime-face-detector 的时候遇到一个问题:Installation takes forever #1386:在构建mmcv-full时卡住,这里分享下解决方法(安装 mmcv 同理,将下面命令中的 mmcv-full 替换成 mmcv) 具体表现如下&#x…

免费域名第二弹:手把手教你获取个性化免费域名并托管至Cloudflare

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 免费申请域名的方法 📒📝 注册账号📝 创建免费域名📝 将域名添加到 Cloudflare⚓️ 相关链接 ⚓️📖 介绍 📖 在如今的数字时代,拥有一个个性化的域名已经成为越来越多人的需求。无论是建立个人博客、项目展示,还…

连获殊荣,天润融通以AI技术重塑企业客户联络体验!

天润融通又获奖了。 2024年3月22日,「ToB行业头条」联合3W集团共同举办的「2024ToB头条行业大会」在北京举行。 为表彰在过去一年中表现卓越、对行业发展作出显著贡献的企业、产品和数字化转型案例,大会颁布了ToB年度榜单【2023中国ToB行业影响力价值榜…

搜维尔科技邀您共赴2024第四届轨道车辆工业设计国际研讨会

会议内容 聚焦“创新、设计、突破”,围绕“面向生命健康、可持续发展的轨道交通系统” 为主题,从数字化、智能化、人性化、绿色发展等方面,探索轨道交通行业的设计新趋势及发展新机遇。 举办时间 2024年7月10日-12日 举办地点 星光岛-青岛融…

CSS3基本语法

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

【AI】如何改换Ollama的模型存储位置

【背景】 ollama在构筑AI应用时是用于统一管理模型库的核心组成部分。默认存放ollama模型库的位置是C盘的用户文件夹的.llama-》model下。但是这样C盘很容易占满。 插一句话,越来越觉得不分区有不分区的方便。 好了,有没有办法改变ollama的默认模型存放…

CSRF跨站请求伪造

CSRF跨站请求伪造 条件 1、需要请求伪造数据包 2、无过滤防护,有过滤防护能绕过 3、受害者需要触发 案例一(无防护) burp抓到添加用户的包 使用burp自带的转换为csrf的poc 勾选上include-auto-submit script,删除点击标签&a…

Google 广告VS Facebook广告:哪个更适合我?2024全维度区别详解

在 Google Ads 和 Facebook Ads 之间进行选择可能是一个艰难的决定。决定哪种方法适合您的业务取决于多种因素,从您愿意为转化支付的费用到管理广告系列所需的时间和人员。在这篇文章中,将解释 Google Ads 和 Facebook Ads 之间的差异,以便您…

Java并发自测题

文章目录 一、什么是线程和进程?线程与进程的关系,区别及优缺点?二、为什么要使用多线程呢?三、说说线程的生命周期和状态?四、什么是线程死锁?如何预防和避免线程死锁?五、synchronized 关键字六、并发编程的三个重要特性七、JMM (Java Memory Mod…

STM32F4 STD标准库串口接收中断+空闲中断例程

STM32F4 STD标准库串口接收中断空闲中断例程 🔖工程基于STM32F446 ✨用惯了STM32CubeMX傻瓜式配置,突然改用标准库写代码,初始化外设内容,总是丢三落四的。 📗串口初始化配置 void uart_init(uint32_t bound) {//GPIO…

Web渗透信息收集进阶

网站敏感目录与文件 网站敏感目录表示网站目录中容易被恶意人员利用的一些目录。通常恶意人员都是通过工具扫描,来扫出网站的敏感目录,敏感目录是能够得到其他网页的信息,从而找到后台管理页面,尝试进入后台等,扫描网…

告别盲目决策!精益生产KPI指标管理系统让你的企业更聪明

在当今快速变化的商业环境中,企业为了保持竞争力,需要高效地追踪、分析和优化各种业务指标。为了实现这一目标,越来越多的企业开始引入指标管理系统,这一工具在提升管理效率和促进业务增长方面发挥着至关重要的作用。 一、什么是…

图解Linux内核(基于6.x):解读Linux内存反向映射之匿名映射

文章目录 📑前言一、匿名映射的mapping二、推荐阅读2.1 一图速览2.2 内容简介 📑前言 内存映射中,我们经常讨论的是由虚拟内存定位物理内存(也就是folio或者page),实际上在很多场景中(比如内存回…

MATLAB直方图中bin中心与bin边界之间的转换

要将 bin 中心转换为 bin 边界,请计算 centers 中各连续值之间的中点。 d diff(centers)/2; edges [centers(1)-d(1), centers(1:end-1)d, centers(end)d(end)];要将 bin 边界转换为bin 中心 bincenters binedges(1:end-1)diff(binedges)/2;

森林之下延迟高如何处理 森林之下联机卡顿的解决方法

森林之下是一款结合了农场模拟、恐怖生存的游戏,玩家需要管理一个被“闹鬼的树林”包围的农场,种植农作物,拯救、驯服、饲养动物,探索被诅咒的森林,并且收集物品来破除诅咒。这款游戏目前已经开放了demo,不…