锁定老帖子 主题:二进制与十进制的相互转法所引出的相关知识
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (2)
|
|
---|---|
作者 | 正文 |
发表时间:2009-01-08
最后修改:2011-05-26
二进制用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的要移动的位数的倍数。) 按位“与”运算符 (&) & 运算符查看两个表达式的二进制表示法的值,并执行按位“与”操作。该操作的结果如下所示:
任何时候,只要两个表达式的某位都为 1,则结果的该位为1。否则,结果的该位为 0。 运用:8&2结果为 8的二进制为1000,2的二进制为0010,比较后二进制结果为0000 结果就为0. 按位“或”运算符 (|) | 运算符查看两个表达式的二进制表示法的值,并执行按位“或”操作。该操作的结果如下所示:
任何时候,只要任一表达式的一位为 1,则结果的该位为 1。否则,结果的该位为 0。 运用:8|2结果为 8的二进制为1000,2的二进制为0010,比较后二进制结果为1010结果为10. 按位“异或”运算符 (^) ^ 运算符查看两个表达式的二进制表示法的值,并执行按位异或。该操作的结果如下所示:
当且仅当只有一个表达式的某位上为 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
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
浏览 5151 次