汇编——位运算

底层基础前提

  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. 为什么不用原码做加减:原码正负运算硬件复杂,补码统一 一套加法电路即可处理正负
相关推荐
狗凯之家源码网10 分钟前
淘客口令落地页生成器 PHP 版深度评测
开发语言·php
画绛集美术16 分钟前
本地化部署LLM用于美术史问答:一间美术教室的实践记录
开发语言·php
八解毒剂44 分钟前
【计组】中央处理器CPU
java·开发语言·计算机组成原理
乐迪信息1 小时前
港口船舶逆行怎么管?AI防爆摄像机搭载智能检测算法
大数据·人工智能·深度学习·算法·计算机视觉
FakeOccupational1 小时前
【电路笔记 信号】DBPSK 波形查找表+脉冲成形(升余弦+根升余弦滤波)
开发语言·笔记
打工仔折腾 AI2 小时前
工业场景下时序库与实时计算一体化架构选型实践对比
java·开发语言·后端·python·性能优化·架构·ai agent 实战
ZealSinger2 小时前
Java虚拟线程上线后瓶颈转移到哪看三层
java·开发语言·firefox
Sirens.2 小时前
Java并发锁详解:六类锁策略与 synchronized 底层原理
java·前端·算法
和裕3 小时前
全纸结构重型纸箱能否满足 1 吨以上设备出口熏蒸豁免要求?通关合规性全解析
大数据·运维·网络·人工智能·算法
tangguofeng3 小时前
不带头结点的链队操作集(不含InitFlag)(C语言版)
算法