學(xué)習(xí)Java本來就是一件日積月累的事情,或許你通過自學(xué)能掌握一些皮毛技術(shù),通過Java培訓(xùn)機構(gòu)學(xué)到Java的一些基本大面,但想要做到精通,還是需要自己技術(shù)的日積月累和工作經(jīng)驗的不斷積累。
今天千鋒重慶Java培訓(xùn)的老師給大家分享的技術(shù)知識是:Java中的位移運算符!
1) “有符號”左移位運算符(<<)能將運算符左邊的運算對象向左移動運算符右側(cè)指定的位數(shù)(在低位補0)。
左移移位相當(dāng)于乘以2,例如
3 << 2 //12 則是將數(shù)字3左移2位 3*2*2 = 3*(2的2次方)
分析:首先把3轉(zhuǎn)換為二進(jìn)制數(shù)字0000 0000 0000 0000 0000 0000 0000 0011,然后把該數(shù)字高位(左側(cè))的兩個零移出,其他的數(shù)字都朝左平移2位,最后在低位(右側(cè))的兩個空位補零。則得到的最終結(jié)果是0000 0000 0000 0000 0000 0000 0000 1100,則轉(zhuǎn)換為十進(jìn)制是12.數(shù)學(xué)意義:
在數(shù)字沒有溢出的前提下,對于正數(shù)和負(fù)數(shù),左移一位都相當(dāng)于乘以2的1次方,左移n位就相當(dāng)于乘以2的n次方。
2) “有符號”右移位運算符(>>)則將運算符左邊的運算對象向右移動運算符右側(cè)指定的位數(shù)。 “有符號”右移位運算符使用了“符號擴展”:若值為正,則在高位插入0;若值為負(fù),則在高位插入1。
>>運算規(guī)則:按二進(jìn)制形式把所有的數(shù)字向右移動對應(yīng)位數(shù),低位移出(舍棄),高位的空位補符號位,移位后得到的數(shù)字為正數(shù)則補0,負(fù)數(shù)補1。
例如11 >> 2,則是將數(shù)字11右移2位
分析:11的二進(jìn)制形式為:0000 0000 0000 0000 0000 0000 0000 1011,然后把低位的最后兩個數(shù)字移出,因為該數(shù)字是正數(shù),所以在高位補零。則得到的最終結(jié)果是0000 0000 0000 0000 0000 0000 0000 0010.轉(zhuǎn)換為十進(jìn)制是3.數(shù)學(xué)意義:右移一位相當(dāng)于除2,右移n位相當(dāng)于除以2的n次方。
3) Java也添加了一種“無符號”右移位運算符(>>>),它使用了“零擴展”:無論正負(fù),都在高位插入0
4)右移一位相當(dāng)于除以2,左移一位(在不溢出的情況下)相當(dāng)于乘以2;移位運算速度高于乘除運算。
5)位運算符的優(yōu)先級
~的優(yōu)先級最高,其次是<<、>>和>>>,再次是&,然后是^,優(yōu)先級最低的是|。
2021-11-02 千鋒教育重慶發(fā)布了 《Java學(xué)習(xí)爆破專欄丨Spring Security系列教程之實現(xiàn)CAS單點登錄上篇-概述》的文章
2021-10-28 千鋒教育重慶發(fā)布了 《爆破專欄丨Spring Security系列教程之Spring Security的四種權(quán)限控制方式》的文章
2021-07-27 千鋒教育重慶發(fā)布了 《千鋒憑借豐富企業(yè)資源,為多所高校學(xué)子提供名企實訓(xùn)機會》的文章
2021-05-10 千鋒教育重慶發(fā)布了 《“創(chuàng)新 變革 匠心 育人”千鋒教研院2021教研升級戰(zhàn)略發(fā)布會即將隆重啟幕》的文章
2021-04-27 千鋒教育重慶發(fā)布了 《第三屆山東省計算機職業(yè)教育大會隆重召開 千鋒教育受邀參會》的文章