最快速度实现2*16

我在腾讯面试时候,对方出了一道题和大家分享一下
他的问题就是如何最快的实现216;
好在我上数字信号处理的宋老师曾经讲过,最快的速度应该是移位运算;
而且仔细一看,满足移位的法则,怎么看出来的呢?
其实就是一个二进制的移位
我们先来看个简单的如何最快的计算10
10000呢?10000是10的四次方最快的操作应该是马上将10向左边移动4位然后空位补零
就能算出1010000=10 0000 (故意用空格隔开,表示后面四个零就10向←移动后产生的空位然后填补的0)
那么同理计算1000
100呢?就是让1000向←移动2两格然后补上两个空位0
再来我们回到216,16就是2的四次方,那么我们使用2进制来表示2就是(0b10)前缀0b表示该数为2进制
0b10向左移动4位然后移动过程中产生的空位用0来填补,就能将变成0b100000计算机很快就能识别表示数为32。就是2
16的解啦!
PS:需要强调任何计算在计算机里面最终都是2进制的计算,就是在计算机中处理的其实就是0和1

你可能感兴趣的:(最快速度实现2*16)