news 2026/6/15 20:57:16

【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/6/15 13:56:47

『NAS』告别付费和广告,在群晖部署PDF工具箱-bentopdf

点赞 关注 收藏 学会了 整理了一个NAS小专栏&#xff0c;有兴趣的工友可以关注一下 &#x1f449; 《NAS邪修》 BentoPDF 是一款隐私优先、纯浏览器端运行的 PDF 全能工具箱&#xff0c;可通过 Docker 轻松部署到 NAS。提供数十种处理 PDF 功能&#xff0c;所有文件处理均在…

作者头像 李华
网站建设 2026/6/14 22:45:08

基于深度学习YOLOv11的护目镜佩戴识别检测系统(YOLOv11+YOLO数据集+UI界面+登录注册界面+Python项目源码+模型)

一、项目介绍 本文设计并实现了一种基于深度学习YOLOv11的护目镜佩戴识别检测系统&#xff0c;旨在通过计算机视觉技术自动检测人员是否规范佩戴护目镜。系统采用YOLOv11目标检测算法&#xff0c;结合包含15,083张图像的自定义数据集&#xff08;训练集13,200张、验证集1,256张…

作者头像 李华
网站建设 2026/6/15 13:43:33

一键降AI工具推荐:2026年3分钟把AI率从90%降到10%

一键降AI工具推荐&#xff1a;2026年3分钟把AI率从90%降到10% 有没有一键搞定的降AI工具&#xff1f; 有。 这篇文章推荐几款真正的"一键降AI"工具&#xff0c;上传论文等几分钟&#xff0c;AI率就能从90%降到10%以下。 什么是"一键降AI"&#xff1f; …

作者头像 李华
网站建设 2026/6/15 14:13:30

知网AIGC检测升级!2026年还能用的免费降AI工具测评

知网AIGC检测升级&#xff01;2026年还能用的免费降AI工具测评 答辩前两周&#xff0c;我的论文被知网AIGC检测标红62%。 用了网上推荐的"免费降AI工具"&#xff0c;折腾了三天&#xff0c;AI率反而涨到了71%。后来才知道&#xff0c;知网在2025年12月底悄悄升级了…

作者头像 李华
网站建设 2026/6/15 14:57:30

零基础的初学者该怎么入门大语言模型(LLM)

随着人工智能技术的飞速发展&#xff0c;大模型已经成为推动这一领域进步的核心力量。它们通过处理海量数据&#xff0c;学习复杂的模式和关系&#xff0c;为各种应用提供了强大的智能支持。从语音识别到自动驾驶&#xff0c;再到个性化推荐系统&#xff0c;大模型正在不断地改…

作者头像 李华
网站建设 2026/6/15 18:58:50

P6015A 泰克Tektronix无源高压探头 40千伏

P6015A 泰克Tektronix无源高压探头 40千伏泰克P6015A高压探头 ‌是 泰克公司 研发的一款无源高压测量设备&#xff0c;主要用于电源设计、马达驱动器、 UPS系统 等场景的高压信号检测&#xff0c;适配数字示波器使用。其核心性能包括20kV直流电压与40kV峰值脉冲电压&#xff08…

作者头像 李华