位移運算
<<運算**
a<
定義一些常量可能會用到<<運算。你可以方便的用1<<16 -1 來表示65535(unsingned int 最大值16位系統)。很多算法和數據結構要求數據模塊必須是2的冪,此時就可以用<<來定義MAX_N等常量。
移位運算符有雙目移位運算符
在c++中,移位運算符有雙目移位運算符:<<(左移)和>>(右移)。移位運算符組成的表達式也屬于算術表達式,其值為算術值。左移運算是將一個二進制位的操作數按指定移動的位數向左移動,移出位被丟棄,右邊移出的空位一律補0。右移運算是將一個二進制位的操作數按指定移動的位數向右移動,移出位被丟棄,左邊移出的空位一律補0,或者補符號位,這由不同的機器而定。在使用補碼作為機器數的機器中,正數的符號位為0,負數的符號位為1。
在移位運算時,byte、short和char類型移位后的結果會變成int類型,對于byte、short、char和int進行移位時,編譯器未做任何優化的情況下(優化后不可預期),規定實際移動 的次數是移動次數和32的余數,也就是移位33次和移位1次得到的結果相同。移動long型的數值時,規定實際移動的次數是移動次數和64的余數,也就是 移動66次和移動2次得到的結果相同。