二进制的运算规则
好的,二进制的运算规则和十进制的非常相似,但只有两个数字(0 和 1),因此更简单。以下是主要的二进制运算规则(全部使用中文说明):
核心:基于位(Bit)进行计算,只有 0 和 1 两种状态。遵循“逢二进一”和“借一当二”的原则。
1. 二进制加法
- 规则:
0 + 0 = 00 + 1 = 11 + 0 = 11 + 1 = 10(这里的10表示0,并向高位 进 1)
- 过程:
- 从最低位(最右边)开始逐位相加。
- 按照上述规则计算当前位的和,并考虑来自低位的进位。
- 如果当前位两个数相加再加进位的结果等于或大于 2 (即
1 + 1或1 + 1 + 1),需要向高位 进 1。当前位的结果是总和减去 2。
- 例子 (计算
1011+1101):1 0 1 1 (被加数) + 1 1 0 1 (加数) ---------- 1 (最低位:1+1=10,记0进1) 1 (进位) ---------- 0 (第二位:1+0=1, 再加进位1 = 10,记0进1) 1 (进位) ---------- 0 (第三位:0+1=1, 再加进位1 = 10,记0进1) 1 (进位) ---------- 0 (第四位:1+1=10,再加进位1 = 11,记1进1) 1 (进位) ---------- 1 1 (最高位进位,加到结果最前面) ========== 1 1 0 0 0 (结果:11000)
2. 二进制减法
- 规则:
0 - 0 = 01 - 0 = 11 - 1 = 00 - 1 = 1(不够减,需要向高位 借 1,相当于借来一个2(10),所以10 - 1 = 1,同时高位要减 1)
- 过程:
- 从最低位(最右边)开始逐位相减。
- 按照上述规则计算当前位的差,并考虑是否需要向高位 借位。
- 如果当前位的被减数小于减数(即出现
0 - 1的情况),需要向高位 借 1。向高位借来的 1 相当于本位的 2。此时本位的计算变为(2 + 当前被减数) - 减数。同时,被借位的高位要 减 1。如果高位是 0,则需要继续向更高位借位(连锁借位)。
-
例子 (计算
1100-0101):1 1 0 0 (被减数) - 0 1 0 1 (减数) ---------- ? (最低位:0-1不够减,向高位(第二位)借1。第二位是0,不够借,继续向高位(第三位)借1) (第三位借1给第二位,第二位变成 10 (即2),然后第二位再借1给最低位(变成10)) (此时:最低位:借来后是10 - 1 = 1;第二位:借出1后是 1 - 0 = 1?等一下:第二位本身是0,借入1变成10(2),再借出1给最低位后剩下 1 (10 - 1 = 1),但还需要减自己的减数0,所以第二位结果是1) (第三位:原本是1,借出1后变成0,要减自己的减数0,结果是0) (第四位:1 - 0 = 1) (具体看下面分解) 借位过程后: 被减数第三位:1 -> 0 (借给了第二位) 被减数第二位:0 -> 借入1后变成10 -> 再借出1给最低位后剩 1 -> 然后减自己的减数0 = 1 被减数最低位:0 -> 借入1后变成10 -> 减自己的减数1 = 1 被减数第四位:1 -> 减自己的减数0 = 1 所以结果: 1 1 0 0 - 0 1 0 1 --------- 0 1 1 1 (结果:0111, 即7) 更直观写法(从右向左逐位计算,标记借位): 1 1 0 0 - 0 1 0 1 --------- 第0位 (最右): 0 < 1,借位。算 10 - 1 = 1, 标记借位 (第二位需要减1)。 第1位: 0 - 0 - 刚才的借位1? 等下... 原第二位被借位后应减1变成 0-0? 不准确。按标准写法: 实际运算: 第0位: 0 - 1,不够。向第1位借。第1位是0,也不够,向第2位借。 第2位借1给第1位,第2位变0,第1位得到2(变成10)。第1位再借1给第0位,第1位剩下1(10-1=1)。第0位得到2(借入),2-1=1。 第1位:现在自己有1,要减减数的0 = 1。 第2位:原本是1借出后变成0,要减减数1?不够! 0 - 1 不够。需要向第3位借。 第3位:1 借给第2位,第3位变0,第2位得到2(变成10)。第2位10 - 减数1 = 1。 第3位:0 - 减数0 = 0。 结果是:第3位:0, 第2位:1, 第1位:1, 第0位:1 -> 0111
3. 二进制乘法
- 规则:
0 × 0 = 00 × 1 = 01 × 0 = 01 × 1 = 1
- 过程:
- 二进制乘法与十进制乘法竖式非常相似。
- 用乘数的每一位(从最低位开始)去乘被乘数,得到一个 部分积。
- 乘数的每一位对应的部分积需要 左移 相应的位数(例如,乘数的第
0位得到的基础部分积,左移0位;乘数的第1位得到的基础部分积,左移1位;第2位左移2位,以此类推)。 - 将所有左移后的部分积 相加,得到最终结果。
- 因为乘数位只能是
0或1,所以部分积要么是被乘数本身(左移若干位),要么是全0。
- 例子 (计算
101×110):1 0 1 (被乘数) × 1 1 0 (乘数) -------- 0 0 0 (乘数第0位是0: 101 × 0 = 000, 左移0位) 1 0 1 (乘数第1位是1: 101 × 1 = 101, 左移1位 -> 1010) + 1 0 1 (乘数第2位是1: 101 × 1 = 101, 左移2位 -> 10100) ------------ 1 1 1 1 0 (相加: 000 + 1010 + 10100 = 11110)结果:
101 × 110 = 11110
4. 二进制除法
- 规则:
- 二进制除法与十进制长除法的原理相同:从被除数的高位开始,确定商,然后乘以除数,从被除数(或当前余数)中减去乘积,下移下一位,直到所有位处理完或余数为零(或达到所需精度)。
- 每一位的商只能是
0或1。
- 过程:
- 比较除数与被除数的最高几位。
- 如果除数小于或等于当前被除数部分,商上
1。用除数乘以1(其实就是除数本身),从当前被除数部分中减去,得到新的余数。 - 如果除数大于当前被除数部分,商上
0。当前余数不变(相当于减去0 * 除数)。 - 下移被除数的下一位,加到当前余数的后面,形成新的被除数部分。
- 重复步骤 1-4,直到处理完所有被除数的位或余数为零。
- 最后的结果是商,可能还有余数。
-
例子 (计算
1101÷101, 即 13 ÷ 5):__1 0_____ (商) 101 ) 1 1 0 1 (被除数) -1 0 1 (用101除110?101 <= 110? 是,商1。1×101=101) -------- 1 1 (余数11, 下移被除数下一位1, 变成111) - 0 (用101除111?101 <= 111? 是,商1? 等下一位位置.. 商第一位是1,对应当前余数110,现在下移的是被除数第3位 (原始被除数的第3位是1,当前余数是1,下移后是11,不是111) --- 标准长除写法如下) 更标准的写法: 商首位位置: 除数101是3位,取被除数前3位(110)比较。 110 > 101 -> 商1。 1 × 101 = 101 110 - 101 = 001 (余数1) 下移被除数下一位 (第4位): 1 -> 余数变成 1 1 (11) 用11(即3)去除以101(5)。3 < 5 -> 不够除,商0(在商的下一位写0) 下移最后一位?被除数只有4位,所有位已处理完。 结果是:商是10(对应位置:首位是最高位,第二位是第二位商),余数是11。 写成: 1 0 (商: 首位在百位?对应二进制权重:第一位对应2^2=4,第二位对应2^1=2) 除数101: 数值 5 被除数1101: 13 商计算: 1 0 (二进制10 = 2) 2 × 5 = 10 余数 = 13 - 10 = 3 (二进制11) 所以:1101 / 101 = 10 ... 余数 11 验证:10(二进制)=2(十进制),11(二进制)=3(十进制);2 × 5 + 3 = 13,正确。
5. 二进制移位
移位操作虽然不属于基本算术运算,但非常重要且在计算机中实现快速乘除:
- 左移 (
<<):- 规则:所有位向左移动指定的位数。右边空出的低位补
0。高位超出存储范围的丢弃。 - 效果:相当于乘以
2^n(n 是左移的位数)。例如:101(5) 左移 1 位 ->1010(10),左移 2 位 ->10100(20)。
- 规则:所有位向左移动指定的位数。右边空出的低位补
- 右移 (
>>):- 逻辑右移: 所有位向右移动指定的位数。左边空出的高位补
0。低位移出的位丢弃。 - 算术右移: 所有位向右移动指定的位数。左边空出的高位用原最高位(符号位)填充。低位移出的位丢弃。(对有符号数,算术右移保持符号不变)。
- 效果:相当于除以
2^n(n 是右移的位数),结果向下取整(只保留商的整数部分)。例如:1010(10) 逻辑右移 1 位 ->0101(5)。1101(-3 的补码) 算术右移 1 位 ->1110(-2?看具体表示和位数,这里假设4位补码:1101 算术右移 -> 1110, 即 -8 + 4 + 2 = -2? 不对?1101是-3,算术右移1位:符号位1,然后填1:变成1110,1110在4位补码是-2?是的,-8+4+2=-2?-8+4+2=-2?-8+4=-4, -4+2=-2?对。但-3 / 2 = -1.5,向下取整是 -2,符合)。
- 逻辑右移: 所有位向右移动指定的位数。左边空出的高位补
重要注意事项:
- 位数固定: 计算机中二进制数的位数通常是固定的。进行加减乘除运算时,结果可能超出该固定位数能表示的范围,导致 溢出 (Overflow) 或 下溢 (Underflow)。
- 补码表示: 实际计算机中,有符号整数通常使用 补码 表示法,这使得加法和减法可以使用相同的硬件电路处理(减法变为加补码),并且统一了零的表示。移位操作也需要区分逻辑移位和算术移位。
- 浮点运算: 涉及小数的运算采用 IEEE 754 浮点数标准进行二进制编码和运算,规则更复杂。
- 高位补零: 进行运算时,如果两个操作数的位数不同,通常在位数较少的数前面补
0使其位数相同(特别在移位操作中很重要)。 - 布尔运算: 二进制位还可以进行逻辑运算(与
&、或|、非~、异或^),这些是构建计算机逻辑电路的基础。
希望这些用中文解释的二进制运算规则对你有帮助!
二进制编码器工作原理 如何选择二进制编码器
二进制编码器是一种数字电路,它将输入的二进制代码转换为对应的输出信号。在数字系统中,编码器用于将数据从一种形式转换为另一种形式,以便于处理和传输。 二进制
2024-11-06 09:44:16
10进制转换为二进制的算法
十进制转换为二进制是计算机科学中非常基础且重要的概念之一。在理解和应用计算机科学的基础知识时,掌握这个算法是至关重要的。 在开始讲解十进制转换为
2024-01-15 10:32:01
10进制转换为二进制的算法
10进制转换为二进制是计算机领域中非常重要的一个问题。在计算机中,所有的数据都是以二进制形式进行存储和处理的。因此,我们常常需要将10
2024-01-11 09:14:29
为什么计算机内部进行二进制运算,而不是十进制运算?
闲来没事在b站上看李永乐老师讲的这个视频,觉得挺有意思的。这篇文章主要是记一下笔记。本篇文章里面的数字若没有特殊指明,默认为二进制数字。你们有没有这样的疑问:为什么计算机内部进行二进制
二进制格雷码与自然二进制码的互换分析
其中采用循环二进制编码的绝对式编码器,其输出信号是一种数字排序,不是权重码,每一位没有确定的大小,不能直接进行比较大小和算术运算,也不能直接转换成其他信号,要经过一次码变换,变成自然
2020-09-23 16:23:04
二进制数逻辑运算是怎么运算的
“与” , 其结果必为 0; 凡同 1 相“与” , 其结果不变(0 同 1 相“与”仍为 0, 1 同 1 相“与”仍为 1) 。因此, 如果一个 8 位二进制数, 想要保留其中的几位而屏蔽(清除) 掉其余
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 芯片的工作原理是什么?
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 什么是蓝牙?它的主要作用是什么?
- ssd是什么意思
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- dtmb信号覆盖城市查询
- EDA是什么?有什么作用?
- 中科院研发成功2nm光刻机
- 苹果手机哪几个支持无线充电的?
- type-c四根线接法图解
- 华为芯片为什么受制于美国?
- 怎样挑选路由器?
- 元宇宙概念股龙头一览
- 锂电池和铅酸电池哪个好?
- 如何进行编码器的正确接线?接线方法介绍
- 什么是场效应管?它的作用是什么?
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- amoled屏幕和oled区别
- 苹果nfc功能怎么复制门禁卡
- 单片机和嵌入式的区别是什么
- 复位电路的原理及作用
- BLDC电机技术分析
- dsp是什么意思?有什么作用?
- 苹果无线充电器怎么使用?
- iphone13promax电池容量是多少毫安
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 传感器常见类型有哪些?
- 自举电路图
- 苹果笔记本macbookpro18款与19款区别
- 通讯隔离作用
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机