JavaScript 进制问题
JavaScript 进制
在JavaScript
当中,最经常使用的进制计算方法是十进制,这也是我们平时生活中计算方式。
不过在平时的使用过程中,JavaScript
还可以使用其他进制方式来进行计算。对于非十进制之外的数据,通常会在数值前面使用 0x、0o、0b 等方式来标识。
二进制
在 JavaScript 中可以编写二进制数据,二进制前的标识是 0b,es6 中引入了原生二进制字面量。
二进制(binary)是在数学和数字电路中指以 2 为基数的记数系统,是以 2 为基数代表系统的二进位制。这一系统中,通常用两个不同的符号 0(代表零)和 1(代表一)来表示
例子:十进制中的15
可以显示为二进制的1111
二进制转十进制正常使用即可,十进制转二进制可以使用 toSting()方法。不过这样转换出的结果其实是字符串类型。
八进制
八进制前需要加标识 0o 或者 0,这两种都可以
十进制转八进制
十六进制
十六进制前的标识是 0x。
十进制转十六进制
当然对于进制转换方法平时自己也可以写一下,就当是练习:
下面的toBaseSystem
方法是十进制转换成二进制、八进制、十六进制的方法。
第一个参数是十进制的数值,第二个参数是需要转换的进制。在转换十六进制时需要注意,十六进制会出现 a-f 的数值
测试结果:
与或非
对于二进制,其实还存在与或非操作,
& 与
&按位与会将操作数和被操作数的相同为进行与运算,如果都为 1 则为 1,如果有一个为 0 则为 0
比如:10101
和 11001
相与结果是 10001
| 或
按位或 是相同的位置上只要有一个为 1 就是 1,两个都为 0 则为 0
比如:10101
和 11001
或结果是 11101
~ 非
~操作符会将操作数的每一位取反,如果是 1 则变为 0,如果是 0 则边为 1
10101
的或运输结果是-10110
,好像有些不对。
这是因为数值是有正负的,需要使用最高位的符号
版权声明: 本文为 InfoQ 作者【空城机】的原创文章。
原文链接:【http://xie.infoq.cn/article/a0b6a601405b3a8b67f968b24】。
本文遵守【CC BY-NC】协议,转载请保留原文出处及本版权声明。
评论