左移,右移的数字意义
左移運(yùn)算符就是在二進(jìn)制的基礎(chǔ)上對(duì)數(shù)字進(jìn)行平移。按照平移的方向和填充數(shù)字的規(guī)則分為三種:<<(左移)、>>(帶符號(hào)右移)和>>>(無(wú)符號(hào)右移)。[1]?
在移位運(yùn)算時(shí),byte、short和char類(lèi)型移位后的結(jié)果會(huì)變成int類(lèi)型,對(duì)于byte、short、char和int進(jìn)行移位時(shí),規(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é)果相同。?
三種移位運(yùn)算符的移動(dòng)規(guī)則和使用如下所示:
<<(左移)?
運(yùn)算規(guī)則:?
按二進(jìn)制形式把所有的數(shù)字向左移動(dòng)對(duì)應(yīng)的位數(shù),高位移出(舍棄),低位的空位補(bǔ)零。?
語(yǔ)法格式:?
需要移位的數(shù)字 << 移位的次數(shù)?
例如: 3 << 2,則是將數(shù)字3左移2位?
計(jì)算過(guò)程:?
3 << 2 首先把3轉(zhuǎn)換為二進(jìn)制數(shù)字0000 0011,然后把該數(shù)字高位(左側(cè))的兩個(gè)零移出,其他的數(shù)字都朝左平移2位,最后在低位(右側(cè))的兩個(gè)空位補(bǔ)零。則得到的最終結(jié)果是0000 1100,則轉(zhuǎn)換為十進(jìn)制是12。
數(shù)學(xué)意義:?
在數(shù)字沒(méi)有溢出的前提下,對(duì)于正數(shù)和負(fù)數(shù),左移一位都相當(dāng)于乘以2的1次方,左移n位就相當(dāng)于乘以2的n次方。
>>(帶符號(hào)右移)?
運(yùn)算規(guī)則:?
按二進(jìn)制形式把所有的數(shù)字向右移動(dòng)對(duì)應(yīng)的位數(shù),低位移出(舍棄),高位的空位補(bǔ)符號(hào)位,即正數(shù)補(bǔ)零,負(fù)數(shù)補(bǔ)1。?
語(yǔ)法格式:?
需要移位的數(shù)字 >> 移位的次數(shù)?
例如11 >> 2,則是將數(shù)字11右移2位?
計(jì)算過(guò)程:?
11的二進(jìn)制形式為:0000 1011,然后把低位的最后兩個(gè)數(shù)字移出,因?yàn)樵摂?shù)字是正數(shù),所以在高位補(bǔ)零。則得到的最終結(jié)果是0000 0010。轉(zhuǎn)換為十進(jìn)制是2。
數(shù)學(xué)意義:?
右移一位相當(dāng)于除2,右移n位相當(dāng)于除以2的n次方。這里是取商哈,余數(shù)就不要了。
>>>(無(wú)符號(hào)右移)?
運(yùn)算規(guī)則:?
按二進(jìn)制形式把所有的數(shù)字向右移動(dòng)對(duì)應(yīng)位數(shù),低位移出(舍棄),高位的空位補(bǔ)零。對(duì)于正數(shù)來(lái)說(shuō)和帶符號(hào)右移相同,對(duì)于負(fù)數(shù)來(lái)說(shuō)不同。 其他結(jié)構(gòu)和>>相似。
?
應(yīng)用舉例:
/*2、 使用位運(yùn)算 判斷x是奇數(shù)還是偶數(shù)*/
if (0 == x & 1) //如果x是偶數(shù),最低位肯定是0,那么x &1 肯定是0
偶數(shù)
else
奇數(shù)
總結(jié)
以上是生活随笔為你收集整理的左移,右移的数字意义的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: PageRank算法
- 下一篇: WVGA,QVGA,VGA,HVGA区别