一、概述
1、在浏览一篇文章时,看到一个介绍 ,使用位移操作替代乘除法 ,若位移多位该怎么计算呢?
二、代码理解
1、Java中位运算: 左移
/** * @Description: Java 位运算 左移 用 "<<" 符号表示 * @return void * @version v1.0 * @author wu * @date 2021年11月24日 下午23:47:28 * @remarks: 左移n位,即乘以 2^n (2的n次幂) */ @Test public void left() { int x = 3 << 1 ; // 左移1位, 等价于 3*2 int y = 3 << 2 ; // 左移2位, 等价于 3*2*2 int z = 3 << 3 ; // 左移3位, 等价于 3*2*2*2 int zz = 3 << 5 ; // 等价于: 3*2^5; num 左移n位,即: num*2^n System.out.println(x); System.out.println(y); System.out.println(z); System.out.println(zz); System.out.println(3*Math.pow(2, 5)); }
2、Java中位运算:右移
/** * @Description: Java中位运算 右移 ">>" 符号表示 * @return void * @version v1.0 * @author wu * @date 2021年11月24日 下午23:50:38 * @remarks: 右移n位,即除以2^n (2的n次幂) */ @Test public void right() { int x = 32 >> 1 ; // 右移1位, 等价于 32/2 int y = 32 >> 2 ; // 右移2位, 等价于 32/2^2 int z = 32 >> 3 ; // 右移3位, 等价于 32/2^3 int zz = 32 >> 5 ; // 等价于 32/2^5 ; num右移n位,即: num/2^n System.out.println(x); System.out.println(y); System.out.println(z); System.out.println(zz); System.out.println(32 / Math.pow(2, 5)); }
三、总结
1、Java中位运算,左移: 表示乘以 ;左移n位,即乘以 2^n (2的n次幂)
2、Java中位运算,右移:表示除以 ; 右移n位,即除以2^n (2的n次幂)