首页 > 其他分享 >对二进制减法的理解

对二进制减法的理解

时间:2024-09-23 10:15:28浏览次数:9  
标签:19 0011 0010 二进制 61 理解 减法

以下内容是写在通过NandGame网站学习二进制运算的,但是没想到写了这么多,想着也可以单独发出来

写到这里突然想到最近在《编码:隐匿在计算机软硬件背后的语言》这本书看到二进制减法的运算,作者一开始不是直接讲减数要转换成补码再计算,而是讲了十进制减法为了不使用借位如何方便计算。比如61-19,由于1不够减需要向6借以一位,那么有没有什么办法不借位计算呢?可以利用十进制的补数实现,可以通过99-19=80,61+80=141,141-100+1=42,三个式子简化一下就是61+(99-19)-100+1,这个式子和61-19的结果是一样的,因为+100和-100其实就是0,这样子主要是不用借位,这样子计算对于人类来说太复杂了,毕竟简单的借位对人类来说很简单,为什么要提十进制的补数在减法的应用,因为二进制减法就是用了这个逻辑来实现的,减数为什么要取反?因为二进制的1111 1111-0001 0011=1110 1100,这里用八个1去减就相当于十进制的99去减,这样子不用借位同时刚好是减数的反码,0001 0011的反码就是1110 1100,接下来是被减数加上减数的反码,0011 1101+1110 1100=1 0010 1001,接着再加一,1 0010 1001+1=1 0010 1010,前面加了1111 1111 和1,接下来要减掉,1 0010 1010-1 000 000 =0010 1010,取得了二进制的补码。这样子在二进制的计算减法中也没用使用借位。文字和式子放在一起可能不好理解,单独把式子提取出来。

61(0011 1101)-19(0001 0011)补数的减法
十进制:
99-19=80
61+80=141
141-100+1=42
把上面三个合成一个式子:
61+(99-19)-100+1=42
二进制:
1111 1111-0001 0011=1110 1100(惊讶的发现0001 0011对每一位取反就是1110 1100)
0011 1101+1110 1100=1 0010 1001
1 0010 1001+1=1 0010 1010
1 0010 1010-1 000 000 =0010 1010

二进制的就不合成一个式子了,因为一合成那么多0和1更不好理解,整体来讲就是二进制的减法就是用了补数的逻辑实现的,这下就理解了二进制减数为什么要取反以及为什么要再加一,经过这两个操作被减数加减数得出的是原本两个数相减的结果。

标签:19,0011,0010,二进制,61,理解,减法
From: https://www.cnblogs.com/dx5800/p/18422456

相关文章

  • ELK日志收集之ES集群部署 二进制
    一、简介ELK是三个开源软件的缩写:Elasticsearch,Logstash和Kibana,这三个组件常用于日志收集和分析。Logstash是一个日志收集和转发的工具,可以将不同源的日志统一收集、过滤、转发。Elasticsearch是基于Lucene的搜索和分析引擎,可用于存储、搜索和分析大量的日志数据。它的特点是......
  • 【TS】加深TS理解的开发实战示例代码
    TS接口开发实战:基于类类型接口设计实现日期时间应用interfaceITimeDate{curTime:Date;setTime(cur:Date):void;getTime():Date;}classCTimeimplementsITimeDate{curTime:Date;constructor(cur:Date){this.curTime=cur;......
  • C语言深入理解指针(四)
    目录字符指针变量数组指针变量数组指针变量是什么数组指针变量怎么初始化二维数组传参的本质函数指针变量函数指针变量的创建函数指针变量的使用代码typedef关键字函数指针数组转移表字符指针变量字符指针在之前我们有提到过,(字符)(指针)前面的字符代表着存储的元素为......
  • 【C++基础知识——std::visit函数理解】
    1.std::visit函数的定义std::visit通常用于访问std::variant类型的对象。std::variant是C++17引入的一种类型安全的联合体,可以存储多个类型中的一个。visit函数允许你通过一个访问者(visitor)来访问std::variant中存储的值,而不需要显式地检查存储的类型。2.示例#......
  • JavaScript二进制浮点数和四舍五入错误
    二进制浮点数和四舍五入错误实数有无数个,但JS通过浮点数的形式,只能表示有限个数,JS表现的常常是真实值的近似表示。二进制无法表示类似于0.1这样的十进制数字,只能机器近似于0.1,看如下代码:<!DOCTYPEhtml><html><head><metacharset="utf-8"><title>3......
  • MySQL 优化器:理解与探秘
    在MySQL数据库的世界里,优化器扮演着至关重要的角色。它就像是一位幕后的魔法师,默默地为数据库的高效运行贡献着力量。那么,MySQL优化器究竟是什么?它又是如何工作的呢?让我们一起来揭开它的神秘面纱。一、MySQL优化器是什么?MySQL优化器是数据库管理系统中的一个核心组件......
  • KOL 与 KOC 极简理解
    KOL与KOC1、KOLKOL(KeyOpinionLeader)是关键意见领袖,是指在某一领域内,拥有高度影响力和专业性的人高度影响力:KOL通常拥有大量的粉丝,他们的言论和推荐能够迅速传播,对广大受众产生显著的影响专业性:KOL在特定领域具有深厚的专业知识和丰富的经验,他们的观点往往被视为......
  • 图文深入理解Oracle DB实例管理
    本来这篇打算承接上篇,接着介绍Oracle数据库表的管理的,但考虑到需要实操,在这之前先深入介绍下OracleDB实例的基本管理,包括一些常用的管理工具和数据库启动过程的各个阶段和几种带选项的关闭方式的会有什么影响。学习知识就得循序渐进,每个知识点揉碎了再彻底消化。一。Oracl......
  • 【多变量输入单步预测】基于减法优化器算法(SABO)优化CNN-BiLSTM-Attention的风电功率
         ......
  • 面向真实监控场景的多模态视频理解
    面向真实监控场景的多模态视频理解https://mp.weixin.qq.com/s/3iPeKtqVEKvWpOb_pqEOXA3. 多模态异常检测 在监控视频领域,常用到多模态异常检测这一技术。传统的异常检测主要关注视频画面的大规模变化或异常行为,如打架或车祸等。随着技术进步,特别是GPT的发展,现在可以在异......