重庆慕尚网站建设南京设计网站建设
重庆慕尚网站建设,南京设计网站建设,wordpress图书馆主题,如何禁止通过ip访问网站【30天精通汇编】Day 1: 计算机基础与二进制#x1f4c5; 学习时间#xff1a;3-4小时
#x1f3af; 学习目标#xff1a;理解计算机底层原理#xff0c;掌握二进制运算
#x1f4a1; 难度#xff1a;★☆☆☆☆
#x1f4cb; 前置要求#xff1a;零基础可学#x1f…【30天精通汇编】Day 1: 计算机基础与二进制 学习时间3-4小时 学习目标理解计算机底层原理掌握二进制运算 难度★☆☆☆☆ 前置要求零基础可学 为什么要学汇编学会汇编你将获得 1. 看透程序本质 - 理解高级语言如何变成机器码 - 知道程序真正在做什么 2. ️ 安全攻防能力 - 逆向工程 - 漏洞挖掘与利用 - 恶意软件分析 3. ⚡ 极致性能优化 - 手写关键代码 - 理解编译器优化 4. 底层开发能力 - 操作系统开发 - 驱动程序开发 - 嵌入式系统1. 计算机如何思考1.1 计算机只认识0和1为什么是0和1 计算机是电子设备只能识别两种状态 - 高电压 → 1 - 低电压 → 0 这就像开关开1关0 所有复杂的程序、图片、视频 在计算机眼里都是一串串的0和11.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 153.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 汇编(ATT): $0xFF Python: 0xFF HTML颜色: #FF0000 常见例子 0xFF 255 0x100 256 0xFFFF 65535 0xFFFFFFFF 42949672954. 数据单位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位CPU1 Word 2 Bytes (16 bits) 32位CPU1 Word 4 Bytes (32 bits) 64位CPU1 Word 8 Bytes (64 bits) 其他术语 双字 (DWORD) 4 Bytes (32位) 四字 (QWORD) 8 Bytes (64位)5. 有符号数与无符号数5.1 无符号数无符号数只能表示非负整数 8位无符号数范围0 ~ 255 16位无符号数范围0 ~ 65535 32位无符号数范围0 ~ 42949672955.2 有符号数补码表示问题如何表示负数 解决方案补码Twos 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 ~ 1275.3 如何计算负数的补码方法取反加1 例子求-5的8位补码 1. 写出5的二进制0000 0101 2. 取反0变11变01111 1010 3. 加11111 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 01016.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 开头公布