java 位运算>><< >>&am

java 位运算>><< >>> & | ~ ^ 代码详解

相关理伦文档这里不说了,也是网上看的,复制没意思!代码+算法请看下面代码

package org.rui.utf;public class BinAlgorithm {/** * @param args */public static void main(String[] args) {int i=2;//2=10int j=3;//3=11/** * 2乘2的3次方 * 2*2*2*2=16 *  * 转为二进制计算  * (2/2=1 余数0      前面补0共32位) * 2=0000 0000 0000 0000 0000 0000 0000 0010  * 二进制移右3位 =0000 0000 0000 0000 0000 0000 0001 00000  * 10000转十进制(1乘2的4次方)=16 * */System.out.println(i<<j);i<<=j;//效果一样,就是算完再赋值给iSystem.out.println(i);/** * 相反 除于2的3次方 * 2/2/2/2=0 *二进制2=0000 0000 0000 0000 0000 0000 0000 0010  *左移3位 =32个全是0 */System.out.println(i>>j);int bt=-20;//bt>>2=  1000 0000 0000 0000 0000 0000 0000 0101System.out.println(">>:"+(bt>>2));/** * 无符号右移 * 它使用了“零扩展”:无论正负,都在高位插入0 * 20=10100 * 用补码表示,1000 0000 0000 0000 0000 0000 0001 0100 *  >>>2=  0010 0000 0000 0000 0000 0000 0000 0101 *   *  1*2的30次方=1073741824 +-5 *  =1073741819     *  为什么会这样算,这个问题也还在研究中, *///bt>>>2= 0010 0000 0000 0000 0000 0000 0000 0101System.out.println(">>>:"+(bt>>>2));/**      位运算符包括: 与(&)、非(~)、或(|)、异或(^)             &:当两边操作数的位同时为1时,结果为1,否则为0。如1100&1010=1000       | :当两边操作数的位有一边为1时,结果为1,否则为0。如1100|1010=1110      ~:0变1,1变0   ~   是 一 元 运 算 法 ,对 数 据 的 每 个 二 进 制 位 取 反       ^:两边的位不同时,结果为1,否则为0.如1100^1010=0110       *///10&11=10 转十进制=2System.out.println(2&3);//10|11=11 转十进制=3System.out.println("2|3="+(2|3));/** * 2= 原码0000 0010求补0000 0010~2取反1111 1101(所得为补码形式) 求补=取反+1而~2 的原码形式补码的补码 10000 0010+1=10000 0011 即-3 */System.out.println(~2);//10^11=01 转十进制=1System.out.println(2^3);}}

———————-

package org.rui.test;public class BitTest {/** * 关于>>取代除  <<取代乘   注意只能取代整数运算,被除和乘的数要是2的次方和 * @param args */public  static void main(String[] args) {System.out.println((double)(1000>>6));System.out.println(1000D/64D);System.out.println(Integer.toBinaryString(1000));/** * 1111101000>>6=1111=15 *  */System.out.println((double)(1000<<6));System.out.println(1000D*64D);/** * 1111101000<<6=1111101000 000000= * 1*2的9次方+  512 * 1*2的11次方+ 2048 * 1*2的12次方+ 4096 * 1*2的13次方+ 8192 * 1*2的14次方+ 16384 * 1*2的15次方+ 32768 * =64000 *  */}}

开始的时侯,我们就知道,总会有终结。

java 位运算&gt;&gt;&lt;&lt; &gt;&gt;&am

相关文章:

你感兴趣的文章:

标签云: