求平均数
1.int mid = left + (right-left)/2;
2.int mid = (left&right)/*相同位不变*/ + ((left^right)/2)/*不同位相加除二*/;
如果我们写成 int mid = (left+right)/2;容易越界,产生错误;这就是我们应该写的求平均数的方法,注意不要写成第三种,容易出错。
移位
移位分为逻辑移位和算数移位,而逻辑移位又分为逻辑左移和逻辑右移;算数移位又分为算数右移和算数左移;
右移符号为>>
逻辑右移后,二进制数的前面补0,不用考虑符号位;
算数右移后,考虑符号位,用原来的符号位填充;
左移符号为<<
不论是逻辑左移还是算数左移都在移位后的二进制数后补0;