Java笔试题:用最有效率的方法计算2乘以8

Java笔试题:用最有效率的方法计算2乘以8

答案是:2<<3

相关知识点:

整数乘法或整数除法所需要的时钟周期远远大于移位操作所需的时钟周期

首先要知道:
1.机器都是使用补码,运算也是使用补码运算。
2.正数的原码补码反码都一样。
3.补码与原码相互转换,其运算过程是相同。

可参考: 计算机中原码,反码,补码之间的关系

java移位运算符可以分为三种:<<(左移)、>>(带符号右移)和>>>(无符号右移)。
ps:没有<<<因为左移无关符号位

1.<<是左移运算符。
左移的规则:丢弃最高位,0补最低位
如果移动的位数超过了该类型的最大位数,那么编译器会对移动的位数取模。如对int型移动33位,实际上只移动了33%32=1位。

2.>>是右移运算符。
右移的规则:符号位不变,左边补上符号位,即正数补零,负数补1。

3.>>>是无符号右移运算符
无符号右移的规则:忽略了符号位扩展,0补最高位

对于整数来说,左移n位,就相当于乘以 2的 n次方;而对于无符号整数和非负有符号整数,右移 n位则相当于整除 2的 n次方。

		System.out.println(2 << 2);// 2x2^2(2的2次方)
		System.out.println(2 << 3);// 2x2^3(2的3次方)
		System.out.println(12 >> 2);// 2/2^2(2的2次方)
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页