位移運(yùn)算
<<運(yùn)算**
a<
定義一些常量可能會(huì)用到<<運(yùn)算。你可以方便的用1<<16 -1 來(lái)表示65535(unsingned int 最大值16位系統(tǒng))。很多算法和數(shù)據(jù)結(jié)構(gòu)要求數(shù)據(jù)模塊必須是2的冪,此時(shí)就可以用<<來(lái)定義MAX_N等常量。
移位運(yùn)算符有雙目移位運(yùn)算符
在c++中,移位運(yùn)算符有雙目移位運(yùn)算符:<<(左移)和>>(右移)。移位運(yùn)算符組成的表達(dá)式也屬于算術(shù)表達(dá)式,其值為算術(shù)值。左移運(yùn)算是將一個(gè)二進(jìn)制位的操作數(shù)按指定移動(dòng)的位數(shù)向左移動(dòng),移出位被丟棄,右邊移出的空位一律補(bǔ)0。右移運(yùn)算是將一個(gè)二進(jìn)制位的操作數(shù)按指定移動(dòng)的位數(shù)向右移動(dòng),移出位被丟棄,左邊移出的空位一律補(bǔ)0,或者補(bǔ)符號(hào)位,這由不同的機(jī)器而定。在使用補(bǔ)碼作為機(jī)器數(shù)的機(jī)器中,正數(shù)的符號(hào)位為0,負(fù)數(shù)的符號(hào)位為1。
在移位運(yùn)算時(shí),byte、short和char類(lèi)型移位后的結(jié)果會(huì)變成int類(lèi)型,對(duì)于byte、short、char和int進(jìn)行移位時(shí),編譯器未做任何優(yōu)化的情況下(優(yōu)化后不可預(yù)期),規(guī)定實(shí)際移動(dòng) 的次數(shù)是移動(dòng)次數(shù)和32的余數(shù),也就是移位33次和移位1次得到的結(jié)果相同。移動(dòng)long型的數(shù)值時(shí),規(guī)定實(shí)際移動(dòng)的次數(shù)是移動(dòng)次數(shù)和64的余數(shù),也就是 移動(dòng)66次和移動(dòng)2次得到的結(jié)果相同。
關(guān)鍵詞: 位移運(yùn)算 主要途徑 都是什么 移位運(yùn)算符 有雙目移位