论坛首页 Java企业应用论坛

二进制与十进制的相互转法所引出的相关知识

浏览 5151 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (2)
作者 正文
   发表时间:2009-01-08   最后修改:2011-05-26
OO

二进制用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

 

 

 

 

 

 

论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics