当前位置: 首页 > news >正文

进制只是“数数的规则”,就像我们日常用十进制(逢10进1),计算机底层用二进制(逢2进1)

一、进制转换:二进制、八进制、十六进制

本质:进制只是“数数的规则”,就像我们日常用十进制(逢10进1),计算机底层用二进制(逢2进1)。

进制基数数字范围特点
二进制(Binary)20, 1计算机唯一能直接识别的,对应开关(开=1,关=0)
八进制(Octal)80–7已较少用,但1位八进制 = 3位二进制(因8=238 = 2^38=23
十六进制(Hex)160–9, A–F(A=10, B=11, …, F=15)1位十六进制 = 4位二进制(因16=2416 = 2^416=24),简洁表达长串二进制(如内存地址、颜色码#FF5733)

转换方法(通俗口诀)

  • 二 → 八:从右向左,每3位一组,补零凑齐 → 每组转为1个八进制数字
    例:101101₂→ 分组101 | 101→ 补前导零成001 | 011 | 010?错!应从右分:101101101 | 101(共6位,刚好两组)→5 | 555₈

  • 二 → 十六:从右向左,每4位一组 → 每组转1个十六进制数字
    例:11010111₂1101 | 0111D | 7D7₁₆

  • 八/十六 → 二:反向展开(每位→固定位数二进制)
    例:27₈010 | 111010111₂A3₁₆1010 | 001110100011₂

  • 任意进制 ↔ 十进制:按权展开(位置从右起编号0,1,2…,权重 = 基数^位置)
    例:1011₂ = 1×2³ + 0×2² + 1×2¹ + 1×2⁰ = 8+0+2+1 = 11₁₀
    2F₁₆ = 2×16¹ + 15×16⁰ = 32 + 15 = 47₁₀


二、补码(Two’s Complement)——计算机存负数的标准方式

🔹为什么需要补码?
避免+0/-0两种表示;让减法变加法(硬件只需加法器);符号位自然参与运算。

🔹定义(n位有符号整数)

  • 正数(含0):原码 = 反码 = 补码(最高位为0)
  • 负数:补码 = 反码 + 1;而反码 = 原码(除符号位外)各位取反

计算步骤(以8位为例)

  • +5:原码00000101→ 补码00000101
  • -5
    1. 原码(符号位1+绝对值):10000101
    2. 反码(符号位不变,其余取反):11111010
    3. 补码(反码+1):11111011

表示范围(n位补码)

  • 最小值:−2^(n−1)
  • 最大值:2^(n−1) − 1
  • 8位:−128+127(共256个数,无歧义)
  • 16位:−32768+32767

💡验证−128的8位补码是10000000(无法用原码表示,但补码可直接定义);−111111111,加1得00000000(溢出归零),完美闭环!


三、四种机器数表示法对比

表示法正数负数生成规则0的表示范围(8位)优点缺点
原码符号位+绝对值符号位=1,数值同正数00000000,10000000(+0/−0)−127 ~ +127直观易懂零不唯一;减法需额外判断符号
反码同原码符号位=1,数值位取反00000000,11111111−127 ~ +127加减可统一用加法(但需循环进位)零不唯一;运算复杂
补码同原码反码+100000000−128 ~ +127零唯一;加减统一;硬件最简理解稍难;负数不能直读数值
移码(常用于浮点数阶码)补码符号位取反移码 = 真值 + 2^(n−1)10000000表示0−128 ~ +127(但顺序升序)阶码大小比较直观(像无符号数)不用于普通运算,仅特定场景

✅ 实际应用:现代CPU所有整数运算均用补码;IEEE浮点数阶码用移码(偏置码)。


四、IEEE 754 浮点数标准(以单精度32位为例)

结构:1位符号(S) | 8位阶码(E) | 23位尾数(M)
👉 对应公式:
值=(−1)S×(1.M)2×2E−127 \text{值} = (-1)^S \times (1.M)_2 \times 2^{E - 127}=(1)S×(1.M)2×2E127
(隐含前导1,称“规格化数”;E=0或255为特殊值)

🔹关键设计

  • 符号位 S:0=正,1=负
  • 阶码 E:8位移码,偏置值=127(即真指数 = E − 127)
  • 尾数 M:23位,但实际精度24位(因隐含1.

举例:5.75的单精度表示

  • 5.75₁₀ = 101.11₂ = 1.0111₂ × 2²
  • S=0;真指数=2 → E = 2 + 127 = 129 =10000001₂
  • M =01110000000000000000000(取小数点后23位)
  • 合并:0 10000001 01110000000000000000000
  • 十六进制:0x40B80000

⚠️ 特殊值:

  • E=0, M=0→ ±0
  • E=0, M≠0→ 非规格化数(表示极小数,支持“逐渐下溢”)
  • E=255, M=0→ ±∞
  • E=255, M≠0→ NaN(Not a Number)

五、校验码原理与应用

类型原理位数开销检错能力典型应用
奇偶校验码添加1位使总1的个数为奇/偶+1位仅检奇数个错,无法纠错UART串口、内存简单校验(EDO DRAM)
海明码(Hamming Code)在2^k位置插入校验位,每位校验多个数据位(覆盖范围由位权决定)约 log₂(n+k)+1 位定位并纠正1位错,检2位错ECC内存(服务器/工作站)、早期硬盘
CRC(循环冗余校验)将数据视为多项式,用预设生成多项式做模2除法,余数作校验码通常16/32位强抗突发错误(如噪声、干扰),检错率极高网络协议(Ethernet, WiFi)、ZIP文件、SD卡

海明码小例(4位数据d1d2d3d4)

  • 插入校验位 p1(p1在1位), p2(2位), p3(4位) → 总7位:p1 p2 d1 p3 d2 d3 d4
  • p1校验位:1,3,5,7 → 覆盖所有bit中第1位为1的位置(二进制索引)
  • 类似地,p2→2,3,6,7;p3→4,5,6,7
  • 每个p_i = 对应位异或结果 → 出错时,p3p2p1组合即错误位置(如101→第5位错)

六、逻辑代数基本运算与化简

运算符号规则举例
与(AND)·全1为1,否则0A·B = 1仅当 A=1且B=1
或(OR)+全0为0,否则1A+B = 0仅当 A=0且B=0
非(NOT)¬取反A′ = 1当 A=0
异或(XOR)相异为1,相同为0A⊕B = A′B + AB′1⊕1=0,1⊕0=1

化简技巧(布尔代数定律)

  • 吸收律:A + AB = A
  • 摩根律:(AB)′ = A′ + B′(A+B)′ = A′B′
  • 配项法:AB + A′C + BC = AB + A′C(因为BC被前两项吸收)

🔹例题化简
F = A′B′C′ + A′B′C + AB′C′ + AB′C
→ 提取A′B′(C′+C) + AB′(C′+C) = A′B′ + AB′ = B′(A′ + A) = B′
✅ 结果极简:F = B′


七、排列组合 & 概率论在算法中的作用

  • 排列组合应用

    • 算法时间复杂度分析:冒泡排序比较次数 = C(n,2) = n(n−1)/2
    • 密码学:密钥空间大小 = 排列数(如AES-128密钥数 = 2¹²⁸)
    • 随机算法:洗牌算法(Fisher-Yates)依赖等概率排列
    • 图论:哈密顿路径计数是NP-hard,本质是全排列约束问题
  • 概率论在算法分析中至关重要

    • 随机化算法:快速排序随机选基准 → 期望时间 O(n log n),避免最坏O(n²)
    • 蒙特卡洛/拉斯维加斯算法:用概率保证正确性或运行时间(如素数测试Miller-Rabin)
    • 负载均衡:散列表冲突概率分析(生日悖论)指导扩容阈值
    • 机器学习:贝叶斯推断、EM算法、dropout正则化均基于概率建模

八、命题逻辑 vs 谓词逻辑

维度命题逻辑(Propositional Logic)谓词逻辑(First-Order Logic, FOL)
基本单位原子命题(P, Q, R),真假值谓词(P(x), Loves(x,y))、变量、量词(∀, ∃)、函数
表达能力只能描述简单事实关系(如 P→Q)可表达“所有人类都会死”:∀x (Human(x) → Mortal(x))
程序设计应用条件语句、断言(assert x > 0)、电路设计(门级逻辑)形式化验证(TLA+, Coq)、数据库查询(SQL语义)、AI知识表示(Prolog)
局限性无法刻画内部结构或量化对象更强,但判定问题不可判定(哥德尔不完备性)

✅ 实际案例:

  • 编译器优化中,用命题逻辑做常量传播(x=5; y=x+1y=6
  • 安全协议验证(如Needham-Schroeder)必须用谓词逻辑建模主体、密钥、时间戳等

九、矩阵运算在计算机图形学中的核心应用

所有3D变换 =4×4齐次矩阵 × 齐次坐标向量((x,y,z,1)ᵀ)

变换矩阵形式说明
平移(Tx,Ty,Tz)[[1,0,0,Tx], [0,1,0,Ty], [0,0,1,Tz], [0,0,0,1]]普通3×3矩阵无法表示平移,齐次坐标解决!
旋转(绕x轴θ)[[1,0,0,0], [0,c,−s,0], [0,s,c,0], [0,0,0,1]](c=cosθ, s=sinθ)同理可写绕y/z轴矩阵
缩放(Sx,Sy,Sz)diag(Sx,Sy,Sz,1)
投影(透视)复杂非线性 → 用矩阵实现“除以w”效果(GPU自动执行)如OpenGL透视矩阵将远近裁剪面映射到[−1,1]³

管线流程
局部坐标 → 模型矩阵 → 世界坐标 → 视图矩阵 → 相机坐标 → 投影矩阵 → 标准设备坐标 → 视口变换 → 屏幕坐标
✨ 所有变换可合并为一个 MVP 矩阵(Model-View-Projection),一次乘法完成!


十、数值计算误差与插值方法

🔹误差来源

  • 模型误差:数学模型本身简化现实(如忽略空气阻力)
  • 截断误差:算法近似(如用泰勒前3项代替sin x)
  • 舍入误差:有限精度浮点表示(0.1 + 0.2 ≠ 0.3
  • 数据误差:输入测量不准(传感器噪声)
  • 累积误差:迭代中误差放大(如病态方程组求解)

🔹常用插值法

方法公式特点优缺点应用
线性插值两点连直线:f(x) ≈ f₀ + (f₁−f₀)(x−x₀)/(x₁−x₀)简单快,但不光滑游戏动画帧间过渡、ADC采样重建
拉格朗日插值构造n次多项式通过n+1个点:L(x) = Σ yᵢ·ℓᵢ(x)精确过所有点,但高次易振荡(龙格现象)小数据点拟合、秘密共享(Shamir方案)
牛顿插值(差商)N(x) = a₀ + a₁(x−x₀) + a₂(x−x₀)(x−x₁) + ...易增删节点,数值稳定工程查表、自适应网格生成
三次样条插值分段三次多项式,保证C²连续(位置、斜率、曲率连续)光滑自然,无振荡CAD建模、字体轮廓(TrueType)、机器人轨迹规划

http://www.jsqmd.com/news/707019/

相关文章:

  • 计算机组成原理教学辅助:用LM Z-Image模拟CPU指令执行
  • 【AI】MCP和SKILLS区别
  • STM32MP157 Linux驱动学习笔记(三):系统级驱动框架(UART/PCIe)
  • 【vllm】(二)vLLM v1 Engine — 模块超深度逐行分析之三
  • 【Linux从入门到精通】第20篇:性能监控工具大盘点
  • RWKV7-1.5B-G1A模型效果展示:对比传统LSTM在文本生成上的优势
  • CAPIO架构:基于CHERI的细粒度安全用户空间驱动
  • 2026成都诚信净水系统供应商:家用地暖供应商、家用格力空调供应商、新风系统中央空调、格力中央空调供应商、格力中央空调总代理选择指南 - 优质品牌商家
  • ESP32-S3-BOX-3开发套件:智能语音与物联网应用实战
  • 机器学习数据快速分析:实战方法与关键洞察
  • 大语言模型幻觉现象解析与应对策略
  • 工业级Wi-Fi 7接入点EKI-6333BE-4GD技术解析与应用
  • AAEON GENE-EHL5工业级单板计算机解析与应用
  • 从新回看《道德经》第二十二章的炊者不立,发现了权力熵增定律的底层逻辑
  • 【Linux从入门到精通】第21篇:Shell脚本开篇——什么是Shell?写第一个Hello World
  • API版本管理:向后兼容与平滑升级的企业级方案
  • Docker AI Toolkit 2026隐藏模式曝光:仅限docker ai enable --stealth启动的联邦学习协调器(附实测吞吐对比表)
  • 2026年Q2四川民宿规划设计标杆名录及核心参数对比:成都商业规划设计公司/成都太空舱民宿公司/成都景区规划推荐/选择指南 - 优质品牌商家
  • GLM-4.1V-9B-Base与C语言交互:通过本地API实现轻量级集成
  • 不止于展示:用3D WebView for Windows在Unity里打造可交互的Web AR/VR应用原型
  • 那些“无用”的书,成就一个“有趣”的人
  • OpenAI发表Nature论文:揭开AI模型总“说谎”的真相,人类对AI准确性的评估促使其产生幻觉
  • Copilot Next 工作流自动化配置到底难在哪?92%开发者卡在第3步——资深架构师逐行调试实录
  • Ryujinx模拟器完全指南:跨平台Switch游戏体验与深度优化策略
  • 自由程序员越全能,越赚不到钱?别再死撑着当“全能工具人”了。
  • 机器学习随机性评估:重复实验次数计算与实践
  • 第二周.系统管理相关的操作总结
  • DTVM:融合EVM生态与Wasm性能的下一代确定性虚拟机
  • 嵌入式AI新选择:将Phi-4-mini-flash-reasoning推理集成到STM32开发流程
  • dij免费问题