學(xué)習(xí)java本來就是一件日積月累的事情,或許你通過自學(xué)能掌握一些皮毛技術(shù),學(xué)到j(luò)ava的一些基本大面,但想要做到精通,還是需要自己技術(shù)的日積月累和工作經(jīng)驗(yàn)的不斷積累。
今天給大家分享的技術(shù)知識(shí)是:Java基礎(chǔ)學(xué)習(xí):java中移位運(yùn)算符
1)“有符號(hào)”左移位運(yùn)算符(<<)能將運(yùn)算符左邊的運(yùn)算對(duì)象向左移動(dòng)運(yùn)算符右側(cè)指定的位數(shù)(在低位補(bǔ)0)。
左移移位相當(dāng)于乘以2,例如
3<<2//12則是將數(shù)字3左移2位3*2*2=3*(2的2次方)
分析:首先把3轉(zhuǎn)換為二進(jìn)制數(shù)字00000000000000000000000000000011,然后把該數(shù)字高位(左側(cè))的兩個(gè)零移出,其他的數(shù)字都朝左平移2位,最后在低位(右側(cè))的兩個(gè)空位補(bǔ)零。則得到的最終結(jié)果是00000000000000000000000000001100,則轉(zhuǎn)換為十進(jìn)制是12.數(shù)學(xué)意義:
在數(shù)字沒有溢出的前提下,對(duì)于正數(shù)和負(fù)數(shù),左移一位都相當(dāng)于乘以2的1次方,左移n位就相當(dāng)于乘以2的n次方。
2)“有符號(hào)”右移位運(yùn)算符(>>)則將運(yùn)算符左邊的運(yùn)算對(duì)象向右移動(dòng)運(yùn)算符右側(cè)指定的位數(shù)。“有符號(hào)”右移位運(yùn)算符使用了“符號(hào)擴(kuò)展”:若值為正,則在高位插入0;若值為負(fù),則在高位插入1。
>>運(yùn)算規(guī)則:按二進(jìn)制形式把所有的數(shù)字向右移動(dòng)對(duì)應(yīng)位數(shù),低位移出(舍棄),高位的空位補(bǔ)符號(hào)位,移位后得到的數(shù)字為正數(shù)則補(bǔ)0,負(fù)數(shù)補(bǔ)1。
例如11>>2,則是將數(shù)字11右移2位
分析:11的二進(jìn)制形式為:00000000000000000000000000001011,然后把低位的最后兩個(gè)數(shù)字移出,因?yàn)樵摂?shù)字是正數(shù),所以在高位補(bǔ)零。則得到的最終結(jié)果是00000000000000000000000000000010.轉(zhuǎn)換為十進(jìn)制是3.數(shù)學(xué)意義:右移一位相當(dāng)于除2,右移n位相當(dāng)于除以2的n次方。
3)Java也添加了一種“無符號(hào)”右移位運(yùn)算符(>>>),它使用了“零擴(kuò)展”:無論正負(fù),都在高位插入0
4)右移一位相當(dāng)于除以2,左移一位(在不溢出的情況下)相當(dāng)于乘以2;移位運(yùn)算速度高于乘除運(yùn)算。
5)位運(yùn)算符的優(yōu)先級(jí)
~的優(yōu)先級(jí)最高,其次是<<、>>和>>>,再次是&,然后是^,優(yōu)先級(jí)最低的是|
以上就是深圳達(dá)內(nèi)教育java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“Java基礎(chǔ)學(xué)習(xí):java中移位運(yùn)算符”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問,請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。
Java基礎(chǔ)學(xué)習(xí)