二进制用0和1表示,十进制是指从0-9的数字。当从高位向低位转换的时候用高位数除以2,能整除的数补0.下面举个例子来说明。例如:
8的二进制算法为
8/2=4 补0;
4/2=2 补0;
2/2=1 补0;
1/2=1;
最后的把结果倒过来得:1000;
当从低位向高位转的时候乘以2的N次方。例如:
1000的十进制计算方法为:
0*2的0次方;
0*2的1次方;
0*2的2次方;
1*2的3次方;
最后得到结果为8。
【应用举例】
在JAVASCRIPT中有个按位左移运算符 (<<)和按位右移运算符 (>>)和按位“与”运算符 (&)和按位“或”运算符 (|)
按位“异或”运算符 (^)就要用到进制转换问题。
例如:
1.
8>>2结果是2,怎么得到的呢?首先把8转成二进制数字为1000.向右移动2位就变成了0010了。
在用到前面的二进制转十进制知识就可以得到结果为2.
同理8<<2二进制的表示为100000了转换为十进制结果为32。
(当然这里有更为简单的算法:当向右移位时用该数除以2的要移动的位数的倍数,当向左移位时用该数乘以2的要移动的位数的倍数。)
按位“与”运算符 (&)
& 运算符查看两个表达式的二进制表示法的值,并执行按位“与”操作。该操作的结果如下所示:
0101 (expression1)
1100 (expression2)
----
0100 (result)
任何时候,只要两个表达式的某位都为 1,则结果的该位为1。否则,结果的该位为 0。
运用:8&2结果为
8的二进制为1000,2的二进制为0010,比较后二进制结果为0000 结果就为0.
按位“或”运算符 (|)
| 运算符查看两个表达式的二进制表示法的值,并执行按位“或”操作。该操作的结果如下所示:
0101 (expression1) 1100 (expression2) ---- 1101 (
结果)
任何时候,只要任一表达式的一位为 1,则结果的该位为 1。否则,结果的该位为 0。
运用:8|2结果为
8的二进制为1000,2的二进制为0010,比较后二进制结果为1010结果为10.
按位“异或”运算符 (^)
^ 运算符查看两个表达式的二进制表示法的值,并执行按位异或。该操作的结果如下所示:
0101 (expression1) 1100 (expression2) ---- 1001 (
结果)
当且仅当只有一个表达式的某位上为 1 时,结果的该位才为 1。否则结果的该位为0。
运用:8^2的结果为
8的二进制为1000,2的二进制为0010,比较后二进制结果为1010结果为10.
=========================================================================
=========================================================================
【补充二进制和八进制和十六进制之间的转换】
八进制就是从0-7的数字表示,十六进制用0-9,A-F表示。在这里就不在鳌述一些概念性的东西了。列如要把56.22表示为
2的三次方为8
(101)(110).(010)(010)
二进制最后结果为:
110101.01001.
【解释:小数点后的数字按从左往右每三位为一位不足三位补0,小数点前的数从右往左每三位为一位补足三位补0. 】
十六进制5D.32转换为二进制:
同理
2的4次方为16所以以4位为一位。
(0101)(1101).(0011)(0010)
最后结果为:
11010101.0011001