1. 进制基础概念扫盲
第一次接触进制转换时,我盯着"0b1010"这样的符号发懵——这串字符和日常使用的数字有什么关系?后来才发现,进制就像不同的语言系统,只是表达数量的方式不同。十进制用0-9十个数字,二进制用0和1两个数字,八进制用0-7八个数字,十六进制则用0-9加上A-F共十六个符号。
理解进制最直观的方式是想象水表转盘:十进制就像有10个刻度的转盘,转到9后再转一圈就归零并在高位进1;二进制则是只有0和1两个刻度的转盘,转半圈就要进位。我在教学生时常用这个比喻,他们立刻就能明白为什么二进制需要更多位数来表示同样的数值。
基数是进制的核心特征,它决定了"逢几进一"。比如二进制基数是2,计算1+1时,本位归0并向高位进1,得到"10"。这个原理在电路设计中非常实用,我参与过的智能家居项目就用二进制信号控制灯光开关,高电平1代表开,低电平0代表关。
2. 非十进制转十进制实战
2.1 二进制转十进制:位权展开法
去年调试物联网设备时,我需要手动解析传感器传回的二进制数据。比如收到"11011011"这个8位数据,转换过程如下:
- 从右到左编号位序(0开始):
位序:7 6 5 4 3 2 1 0 数值:1 1 0 1 1 0 1 1 - 每位数值乘以2的位序次方:
1×2⁷ + 1×2⁶ + 0×2⁵ + 1×2⁴ + 1×2³ + 0×2² + 1×2¹ + 1×2⁰ - 计算各项结果:
128 + 64 + 0 + 16 + 8 + 0 + 2 + 1 = 219
易错点:初学者常犯两个错误——位序编号方向错误(应该从右到左),或者忘记2的0次方等于1。我在早期项目中也曾因此导致数据解析错误,后来养成了在代码里添加位序注释的习惯。
2.2 八进制/十六进制转十进制
网络协议分析时经常遇到八进制表示的权限代码

&spm=1001.2101.3001.5002&articleId=155369439&d=1&t=3&u=42c4b825e90446a0a08e9d30cd8a6bb8)
7128

被折叠的 条评论
为什么被折叠?



