js数值进制

数值的进制

使用字面量(literal)直接表示一个数值时,JavaScript 对整数提供四种进制的表示方法:十进制、十六进制、八进制、二进制。浏览器

  • 十进制:没有前导0的数值。
  • 八进制:有前缀0o或0O的数值,或者有前导0、且只用到0-7的八个阿拉伯数字的数值。
  • 十六进制:有前缀0x或0X的数值。
  • 二进制:有前缀0b或0B的数值。

默认状况下,JavaScript 内部会自动将八进制、十六进制、二进制转为十进制。下面是一些例子。ide

0xff // 255
0o377 // 255
0b11 // 3

若是八进制、十六进制、二进制的数值里面,出现不属于该进制的数字,就会报错。ip

0xzz // 报错
0o88 // 报错
0b22 // 报错

上面代码中,十六进制出现了字母z、八进制出现数字八、二进制出现数字2,所以报错。it

一般来讲,有前导0的数值会被视为八进制,可是若是前导0后面有数字8和9,则该数值被视为十进制。class

0888 // 888
0777 // 511

前导0表示八进制,处理时很容易形成混乱。ES5 的严格模式和 ES6,已经废除了这种表示法,可是浏览器为了兼容之前的代码,目前还继续支持这种表示法。二进制