news 2026/5/6 12:04:08

【30天精通汇编】Day 1: 计算机基础与二进制

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【30天精通汇编】Day 1: 计算机基础与二进制

【30天精通汇编】Day 1: 计算机基础与二进制

📅 学习时间:3-4小时
🎯 学习目标:理解计算机底层原理,掌握二进制运算
💡 难度:★☆☆☆☆
📋 前置要求:零基础可学


📌 为什么要学汇编?

学会汇编,你将获得: 1. 🔍 看透程序本质 - 理解高级语言如何变成机器码 - 知道程序"真正在做什么" 2. 🛡️ 安全攻防能力 - 逆向工程 - 漏洞挖掘与利用 - 恶意软件分析 3. ⚡ 极致性能优化 - 手写关键代码 - 理解编译器优化 4. 🔧 底层开发能力 - 操作系统开发 - 驱动程序开发 - 嵌入式系统

1. 计算机如何"思考"

1.1 计算机只认识0和1

为什么是0和1? 计算机是电子设备,只能识别两种状态: - 高电压 → 1 - 低电压 → 0 这就像开关:开=1,关=0 所有复杂的程序、图片、视频, 在计算机眼里都是一串串的0和1!

1.2 一个简单的类比

想象你只能用手势交流: - 竖起大拇指 = 1 - 握拳 = 0 用10个手指,你能表示多少种状态? 答案:2^10 = 1024种! 这就是二进制的力量。

2. 二进制基础

2.1 什么是二进制

十进制(我们日常用的): 每位有0-9共10种可能 123 = 1×100 + 2×10 + 3×1 = 1×10² + 2×10¹ + 3×10⁰ 二进制(计算机用的): 每位只有0和1两种可能 1011 = 1×8 + 0×4 + 1×2 + 1×1 = 1×2³ + 0×2² + 1×2¹ + 1×2⁰ = 8 + 0 + 2 + 1 = 11(十进制)

2.2 二进制转十进制

方法:从右往左,每位乘以2的幂次,然后相加 二进制:1101 位3: 1 × 2³ = 1 × 8 = 8 位2: 1 × 2² = 1 × 4 = 4 位1: 0 × 2¹ = 0 × 2 = 0 位0: 1 × 2⁰ = 1 × 1 = 1 合计 = 13 所以:1101(二进制) = 13(十进制)

2.3 十进制转二进制

方法:不断除以2,记录余数,然后倒序排列 把13转成二进制: 13 ÷ 2 = 6 余 1 6 ÷ 2 = 3 余 0 3 ÷ 2 = 1 余 1 1 ÷ 2 = 0 余 1 ↑ 从下往上读 答案:1101 验证:8 + 4 + 0 + 1 = 13 ✓

2.4 常用的2的幂次

记住这些数字,会让你更快! 2⁰ = 1 2¹ = 2 2² = 4 2³ = 8 2⁴ = 16 2⁵ = 32 2⁶ = 64 2⁷ = 128 2⁸ = 256 2⁹ = 512 2¹⁰ = 1024 (1K) 2¹⁶ = 65536 (64K) 2²⁰ = 1048576 (1M) 2³² = 4294967296 (4G)

3. 十六进制

3.1 为什么需要十六进制

问题:二进制太长了! 比如:11111111111111111111111111111111 这是32位的二进制数,写起来太麻烦 解决方案:十六进制(Hexadecimal,简称Hex) 十六进制用0-9和A-F表示16种值: 0 1 2 3 4 5 6 7 8 9 A B C D E F 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

3.2 二进制与十六进制转换

技巧:4位二进制 = 1位十六进制 二进制 十六进制 0000 = 0 0001 = 1 0010 = 2 0011 = 3 0100 = 4 0101 = 5 0110 = 6 0111 = 7 1000 = 8 1001 = 9 1010 = A 1011 = B 1100 = C 1101 = D 1110 = E 1111 = F 例子: 二进制:1111 0000 1010 1011 十六进制: F 0 A B 所以:1111000010101011(二进制) = F0AB(十六进制)

3.3 十六进制表示法

不同语言中的十六进制表示: C/C++/Java: 0xFF, 0x1234 汇编(Intel): 0FFh, 1234h 汇编(AT&T): $0xFF Python: 0xFF HTML颜色: #FF0000 常见例子: 0xFF = 255 0x100 = 256 0xFFFF = 65535 0xFFFFFFFF = 4294967295

4. 数据单位

4.1 位和字节

位 (bit, b): 最小的数据单位 只能是0或1 字节 (Byte, B): 8个位组成1个字节 1 Byte = 8 bits 一个字节能表示:2⁸ = 256种值(0-255) 例子: 01001000 = 72(十进制) = 0x48(十六进制) = 'H'(ASCII字符)

4.2 更大的单位

1 KB (Kilobyte) = 1024 Bytes = 2¹⁰ B 1 MB (Megabyte) = 1024 KB = 2²⁰ B 1 GB (Gigabyte) = 1024 MB = 2³⁰ B 1 TB (Terabyte) = 1024 GB = 2⁴⁰ B 注意:硬盘厂商常用1000进制(所以标称容量比实际小)

4.3 字(Word)

字的大小取决于CPU架构: 16位CPU:1 Word = 2 Bytes (16 bits) 32位CPU:1 Word = 4 Bytes (32 bits) 64位CPU:1 Word = 8 Bytes (64 bits) 其他术语: 双字 (DWORD) = 4 Bytes (32位) 四字 (QWORD) = 8 Bytes (64位)

5. 有符号数与无符号数

5.1 无符号数

无符号数:只能表示非负整数 8位无符号数范围:0 ~ 255 16位无符号数范围:0 ~ 65535 32位无符号数范围:0 ~ 4294967295

5.2 有符号数(补码表示)

问题:如何表示负数? 解决方案:补码(Two's Complement) 规则:最高位是符号位 - 0 表示正数 - 1 表示负数 8位有符号数例子: 0111 1111 = +127(最大正数) 0000 0001 = +1 0000 0000 = 0 1111 1111 = -1(全1表示-1) 1111 1110 = -2 1000 0000 = -128(最小负数) 8位有符号数范围:-128 ~ +127

5.3 如何计算负数的补码

方法:取反加1 例子:求-5的8位补码 1. 写出5的二进制:0000 0101 2. 取反(0变1,1变0):1111 1010 3. 加1:1111 1011 验证:1111 1011 = -5 反向验证:-5 + 5 应该等于0 1111 1011 (-5) + 0000 0101 (+5) = 1 0000 0000 (溢出的1被丢弃,结果是0) ✓

6. 位运算

6.1 基本位运算

AND(与):都是1才是1 1010 & 1100 = 1000 OR(或):有1就是1 1010 | 1100 = 1110 XOR(异或):不同为1 1010 ^ 1100 = 0110 NOT(非):取反 ~ 1010 = 0101

6.2 移位运算

左移(<<):相当于乘以2 0011 << 1 = 0110 (3 → 6) 0011 << 2 = 1100 (3 → 12) 右移(>>):相当于除以2 1100 >> 1 = 0110 (12 → 6) 1100 >> 2 = 0011 (12 → 3)

6.3 位运算的妙用

1. 判断奇偶 n & 1 == 0 → 偶数 n & 1 == 1 → 奇数 2. 乘以2 n << 1 等于 n × 2 3. 除以2 n >> 1 等于 n ÷ 2 4. 交换两个数(不用临时变量) a = a ^ b b = a ^ b a = a ^ b 5. 清除最低位的1 n & (n - 1) 6. 保留最低位的1 n & (-n)

7. 练习题

练习1:进制转换(难度:★☆☆☆☆)

把下列数转换:

  • 二进制 10110 → 十进制?
  • 十进制 42 → 二进制?
  • 二进制 11011110 → 十六进制?

练习2:补码计算(难度:★★☆☆☆)

计算8位补码表示的-10。

练习3:位运算(难度:★★☆☆☆)

计算:0xAB & 0x0F = ?


8. 小结

[二进制基础] 1. 计算机只认识0和1 2. 二进制转十进制:权重相加 3. 十进制转二进制:除2取余 [十六进制] 4. 4位二进制 = 1位十六进制 5. 用0-9和A-F表示 [数据单位] 6. 1 Byte = 8 bits 7. 字的大小取决于CPU [有符号数] 8. 补码表示:取反加1 9. 最高位是符号位 [位运算] 10. AND, OR, XOR, NOT 11. 左移、右移

💡 小白提示

不要急于求成! 二进制和位运算是汇编的基础。 如果这部分还没完全理解, 建议多做几遍练习再继续。 记住:1024个小时的练习, 造就1024种可能!

下一篇预告:Day 2 - CPU架构与寄存器

我们将学习CPU是如何工作的,以及最重要的寄存器。


练习题答案将在 Day 2 开头公布

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/6 1:48:25

探秘《Hands on Large Language Models》:开启大模型学习之旅(附教程)

今天要给大家介绍一本在大语言模型领域超有分量的新书 ——《Hands on Large Language Models》。目前已经正式发布&#xff0c;干货满满&#xff0c;绝对能让你抢先一步深入大语言模型的奇妙世界。 当大语言模型遇上 “实战指南” 这几年&#xff0c;大语言模型那可是火得一塌…

作者头像 李华
网站建设 2026/5/6 12:03:19

降AI工具安全吗?论文会被收录吗?2026年隐私保护指南

降AI工具安全吗&#xff1f;论文会被收录吗&#xff1f;2026年隐私保护指南 用降AI工具处理论文&#xff0c;安全吗&#xff1f;会不会被收录到数据库&#xff1f; 这是很多同学担心的问题。毕竟论文是自己的心血&#xff0c;万一被泄露或收录就麻烦了。 这篇文章帮你搞清楚…

作者头像 李华
网站建设 2026/5/2 15:55:55

下载与快速上手 NVM:Node.js 版本管理工具

一、准备工作&#xff1a;卸载旧版 Node.js 重要提示&#xff1a;在安装 NVM 前&#xff0c;请先彻底删除已安装的 Node.js&#xff0c;避免路径冲突&#xff1a;检查安装路径where node常见路径&#xff1a;C:\Program Files\nodejs\ C:\Users\用户名\AppData\Local\nodejs\卸…

作者头像 李华
网站建设 2026/5/1 18:20:37

2026年最新降AI攻略总结:一站搞定论文AIGC检测

2026年最新降AI攻略总结&#xff1a;一站搞定论文AIGC检测 这篇文章是2026年降AI攻略的终极总结。 如果你只想看结论&#xff0c;直接拉到最后。如果想了解细节&#xff0c;继续往下看。 2026年AIGC检测现状 检测平台&#xff1a;知网、维普、万方 红线标准&#xff1a; 本…

作者头像 李华
网站建设 2026/5/2 15:08:52

DeepSeek+豆包+Kimi降AI指令有用吗?2026年实测告诉你真相

DeepSeek豆包Kimi降AI指令有用吗&#xff1f;2026年实测告诉你真相 网上流传着很多"降AI指令"&#xff0c;说用DeepSeek、豆包、Kimi就能把AI率降下来。 我认真测试了一下&#xff0c;结论是&#xff1a;有一定效果&#xff0c;但很有限。 想把AI率从60%降到10%以…

作者头像 李华