汇编——位运算

底层基础前提

  1. 计算机硬件仅识别二进制 0、1,CPU 原生只有位运算指令:AND、OR、NOT、XOR、SHL/SHR 移位,没有直接的加减乘除硬件电路
  2. 所有加减乘除四则运算,全部依靠位运算组合模拟实现,是底层原理、面试高频考点

加法底层原理(XOR + AND + SHL 三步法)

核心逻辑拆解

  1. XOR 异或 = 无进位本位和 相同为 0、不同为 1,完全等价只算本位、忽略进位的加法结果
  2. AND 按位与 = 识别进位位置 两位全为 1 才输出 1,凡是AND结果为 1 的二进制位,代表此处产生进位
  3. SHL 逻辑左移 1 位 = 进位整体挪到高位 进位要加到左边相邻高位,所以进位值整体左移一位
  4. 循环叠加:把【本位异或结果】和【左移后的进位值】再次套入这套逻辑,直到进位值变为 0,此时异或值就是最终加法答案
    实例演示:4 + 5
  5. 转二进制4=0100,5=0101
  6. 第一轮
    ● XOR:0100
    0101

    = 0001(无进位和)
    ● AND:0100
    0101

    = 0100(存在进位)
    ● 进位左移 1 位:0100 << 1 = 1000
  7. 第二轮,计算 0001 + 1000
    ● XOR:0001
    1000

    = 1001
    ● AND:0001
    1000

    = 0000(无进位)
  8. 进位 = 0,终止运算1001 = 9

减法底层原理(加法变形:A - B = A + (-B)

关键规则

计算机负数用补码存储,-B = B按位取反 + 1(NOT B + 1),减法等价「被减数 + 减数的补码」,复用上面一套加法位运算逻辑

实例演示:4 - 5

  1. 转化:4 - 5 = 4 + (-5)
  2. 求 - 5 补码(4 位演示)5=0101,按位取反1010,+1得补码1011
  3. 套加法流程计算 0100 + 1011,最终得到负数补码结果,解析后值为-1

乘法、除法底层逻辑

  1. 乘法:拆解为移位累加
    a × n= 把 a 根据 n 的二进制每一位,对应左移若干位,全部移位结果累加,底层依托加法位运算
    例:5×3=5×(2+1) = (5<<1)+5 //二进制里数字左移1位=乘以2^1
  2. 除法:拆解为移位递减
    循环用大数减小数、配合右移实现整除取商、余数,底层依托减法(二次依托加法位运算)

整体层级关系

  1. 最底层:原生位运算(与 / 或 / 非 / 异或 / 移位)
  2. 中层:组合位运算实现加法、减法
  3. 上层:依托加减实现乘法、除法 所有复杂数值运算,根源全部来自基础位运算组合

面试考点

  1. 加法两步核心:XOR 拿本位、AND+SHL 处理进位,循环至进位清零
  2. 减法本质:加上减数的补码
  3. 乘除是加减的移位循环封装
  4. 为什么不用原码做加减:原码正负运算硬件复杂,补码统一 一套加法电路即可处理正负
相关推荐
zhangjw341 小时前
第29篇:Java伪共享与对象分配:并发性能优化的关键
java·开发语言·性能优化
可编程芯片开发1 小时前
基于simulink的PEM燃料电池控制系统建模与仿真,对比PID,积分分离以及滑模控制器
算法
学究天人2 小时前
数学公理体系大全:Comprehensive Collection of Mathematical Axiom Systems(卷2)
算法·数学建模·动态规划·图论·抽象代数·拓扑学
hai3152475432 小时前
九章编译法----空间几何统一编译法
网络·汇编·人工智能·线性代数
Java面试题总结2 小时前
Python 开发技巧 · 高级装饰器 —— 从基础到工业级实战
开发语言·python
玛卡巴卡ldf2 小时前
【LeetCode 手撕算法】(细节知识点总结)
java·数据结构·算法·leetcode·力扣
数据知道3 小时前
安全报告怎么写才专业:渗透测试报告模板与踩坑
安全·网络安全·漏洞修复·安全报告·渗透测试报告
wanzehongsheng3 小时前
零碳产业园光伏园区光伏电站追踪对比固定:发电增益技术边界分析
算法·光伏发电·光伏·零碳园区·太阳能追光·低碳环保·追踪电站
liulilittle3 小时前
Exhaustive drift-fix simulation V2 — KCC on shared-bottleneck wired path.
开发语言·网络·python·tcp/ip·计算机网络·信息与通信·通信