最近在刷题的过程中发现官方给的解答中,出现了 mid=(left+right)>>1; 起初不是很理解,其实就是等于 mid=(left+right)/2;
对于 右移运算符>> 如何实现mid=(left+right)>>1 = mid=(left+right)/2;
假设 m=6 ,其二进制数为 110,x>>1代表的将m右移一位,则把最右边的0删掉,变为,011,此时m=3,如果再右移一位,此时m变为001,m=1;
所以 m>>1=m/2;
类比 m>>n = m/2^n;
相反:左移运算符<< 实现的是乘法
m<<1 = m*2;
对于运算速度 m>>1 的运算速度大于m/2 (这一点我并没有找到原理是什么,如果有知道的可以在评论区告诉我一下)