javascript的number类型无进制格式,内存中统一为ieee 754双精度浮点数;所谓二进制、十六进制仅为源码字面量或字符串转换时的表示方式,非内在属性。

下面分三类讲清楚实际怎么用:
一、源码中直接写不同进制的字面量(仅用于初始化)
这是最直观的写法,JS 引擎会在解析阶段立刻转成十进制数值,后续运算完全无感知:
-
二进制:以
0b或0B开头,只支持整数,如0b1010→ 十进制10 -
八进制:以
0o或0O开头(ES6 正式写法),如0o755→493;旧式0123已废弃,严格模式下报错 -
十六进制:以
0x或0X开头,字母不区分大小写,如0xFF→255,0xaef→2799 - 负数要写成
-0b101,不能写0b-101(语法错误)
二、字符串 ↔ 数字的进制转换(运行时常用)
用户输入、API 返回或配置项常是字符串,必须显式转换才能参与计算:
你接手一个需求时,是不是经常这样:"改一个小字段 → 结果把不相关的代码也改了"、"需求说得很模糊 → 做着做着发现跑偏了"、"数据库加个字段 → 上线才发现漏了数据兼容"、"做了个新功能 → 一个月后自己都忘了当时怎么设计的"、"写到一半被中断 → 再回来不知道从哪继续";这个 Skill 就是专门解决这些问题的。 它会自动探测你的项目环境(JDK、Spring Boot、ORM、数据库、前端框架),记在
-
字符串转数字:用
parseInt(str, radix),radix必须明确指定(如2、8、16)
✅parseInt("1101", 2)→13;parseInt("ff", 16)→255
❌parseInt("08")在老环境会被当八进制(结果为0),应写成parseInt("08", 10) -
数字转字符串:调用
.toString(radix),支持 2–36 进制
✅(25).toString(2)→"11001";(255).toString(16)→"ff"
⚠️ 负数会带负号:(-10).toString(2)→"-1010",不是补码
三、位运算:真正按二进制位操作(底层逻辑)
位运算符(&、|、^、、<code>>>、>>>)会把操作数临时转为 32 位有符号整数再计算:
- 小数部分被截断:
3.7 | 0→3 -
>>是算术右移(保留符号位),>>>是无符号右移(高位补 0) - 常用技巧:
提取第 n 位:(num >> n) & 1
设置第 n 位:num | (1 <br> 清除第 n 位:<code>num & ~(1
需要处理超大整数(如 > 2⁵³)时,Number 会丢失精度,此时应改用 BigInt(如 0b1010n、parseInt("...", 2)n)。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










