leetcode奇技淫巧-位运算代替乘除法

文章目录

我们知道 java 位移运算<<>>可以代替乘除法,我今天在看容器类源码的时候又看到了,想写一写了

位移运算的使用

// 相当于 a/2^1,结果是 5
int a = 11;
System.out.println(a >> 1);

// 相当于 a/2^2,结果是 2
System.out.println(a >> 2);

// 相当于 a*2^1,结果是 22
System.out.println(a << 1);

// 相当于 a*2^2,结果是 44
System.out.println(a << 2);

原因解释

位运算比平常的乘除法符号运算效率要高的多,平常写代码为什么只用乘除操作呢,因为位运算可读性不好

为什么>>把最后一位移走,相当于除以 2 呢,因为这是 2 进制,移走最后一位相当于除以 2,和十进制移走最后一位除以 10 一个道理

强烈建议

强烈建议不要再业务代码中这么写,这样会被老板打的很惨o( ̄︶ ̄)o,在一些偏底层的框架或者 leecode 中使用还是蛮好的

你可能感兴趣的:(#,LeetCode,奇技淫巧)