0x、0b 是什么?二进制与十六进制手算一遍

一、进制只是「逢几进一」

进制可用符号
二进制0 1
八进制0~7
十进制0~9
十六进制0~9 A~F(A=10,F=15)

最大能到 36 进制:0~9 加 26 个字母刚好 36 个符号,短链接服务常拿它压缩 ID。比如十进制 1234567890 转成 36 进制是 KF12OI

二、十进制转二进制:除 2 取余,倒着读

以 13 为例:

  1. 13 ÷ 2 = 6 余 1
  2. 6 ÷ 2 = 3 余 0
  3. 3 ÷ 2 = 1 余 1
  4. 1 ÷ 2 = 0 余 1(商为 0 就停)

余数从下往上读:1101

验算回去:1×8 + 1×4 + 0×2 + 1×1 = 13。

三、分组转换(最省事的一条)

不必绕道十进制:

  • 二进制 → 十六进制:每 4 位一组。11111111 → FF
  • 二进制 → 八进制:每 3 位一组。11111111 → 377
  • 反过来:一位十六进制拆成 4 位,一位八进制拆成 3 位

所以一个字节(8 位)= 两位十六进制。这也是内存地址、颜色值(#RRGGBB 每两位一个通道,FF0000 是纯红)、MAC 地址都用十六进制的原因:比二进制短一半,又比十进制直观。

四、0x 和 0b 是给编程语言看的前缀

0x 前缀表示十六进制,0b 表示二进制,部分语言用 0o 表示八进制。

  • 0xFF = 255
  • 0b1010 = 10
  • 0x10 = 16(不是 10)

注意:进制转换工具里输入 0x41 会报错,它只接受纯数字与字母——前缀是语法标记,不是数字本身的一部分。

五、ASCII 速查

字符十进制十六进制二进制
A654101000001
Z905A01011010
a976101100001
0483000110000
9573900111001
空格322000100000
LF(换行)100A00001010
CR(回车)130D00001101

三段都是连续排列:大写 A~Z 是 65~90,小写 a~z 是 97~122,数字 0~9 是 48~57。所以「大写转小写」在底层就是加 32。

LF 和 CR 的区别值得单独记:CR(13) 来自打字机把字车推回行首,LF(10) 是把纸往上卷一行。Unix/Linux 只用 LF,Windows 用 CR+LF,跨平台文本里多出来的 ^M 就是这么来的。

标准 ASCII 只到 127。128~255 属于扩展区,含义取决于代码页(Windows-1252、ISO-8859-1、GBK 对同一个码值解释不同),直接列出来反而误导,所以工具只收录 0~127;中文没有 ASCII 码,UTF-8 下一个汉字占 3 字节。

六、直接算

进制转换:2~36 进制互转,支持一键步进

ASCII 码表:0~127 的十进制、十六进制、八进制、二进制对照

编码转换:Base64、十六进制、二进制,看中文的真实字节

本站文章为个人使用经验的原创整理,除已注明来源的引用外均为本人撰写。文中涉及的软件名称、商标、截图等归各自权利人所有,引用仅用于说明与交流。如认为本站内容侵犯了你的合法权益,请通过「关于本站」页面的联系方式告知,核实后将及时更正或删除。