汇编——位运算

底层基础前提

  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. 为什么不用原码做加减:原码正负运算硬件复杂,补码统一 一套加法电路即可处理正负
相关推荐
m0_719640873 分钟前
2026年适合课题研究的具身智能实验室建设方案有哪些可参考?
经验分享·算法
水饺编程9 分钟前
第2章:Linux 基础,在 root 中创建用户账号
linux·c语言·汇编·1024程序员节
LMT流氓兔12 分钟前
第五单元——第9课:防止同一次操作重复执行
java·服务器·数据库·算法·ai·langchain
zhangdaliangmvp19 分钟前
快速排序的学习理解:从基础分治到三路划分优化
c++·学习·算法
code2cat24 分钟前
Java高级篇之JDBC:连接数据库,完成查询、更新与事务
java·开发语言·数据库
乐迪信息27 分钟前
AI算法盒子船体烟火检测:港口火灾早预警
人工智能·深度学习·算法
hzxxxz31 分钟前
PHP引擎两个高危漏洞复盘:计数顺序与旧地址缺陷的机理与处置清单
开发语言·php
马立杰33 分钟前
PHP 未授权 RCE 应急响应:CVE-2026-109618 CVE-2026-109619 排查与加固实战
android·开发语言·php
lisw051 小时前
发酵算法两大应用方向解析
算法·数学建模
布莱克6051 小时前
C++ 内存泄漏全解析:常见场景、成因与规避实践
开发语言·c++·内存泄露