一直以來位移運(yùn)算符都用的很少唱遭,所以一直忽略了它。不過今天突然明白了規(guī)則于是乎就上網(wǎng)翻看了一下別人的一些博客刨仑,驗(yàn)證了自己的想法,沒想到還真是這樣的夹姥,很是欣慰呀杉武,至少以后在看到此類東西不會(huì)一頭霧水了。以下內(nèi)容包含網(wǎng)上查找的內(nèi)容
<< 左移運(yùn)算符
表達(dá)式:value << num
左移的規(guī)則:
丟棄最高位辙售,0補(bǔ)最低位
按二進(jìn)制形式把所有的數(shù)字向左移動(dòng)對(duì)應(yīng)的位數(shù)轻抱,高位移出(舍棄),低位的空位補(bǔ)零旦部。
當(dāng)左移的運(yùn)算數(shù)是int 類型時(shí)祈搜,每移動(dòng)1位它的第31位就要被移出并且丟棄;
當(dāng)左移的運(yùn)算數(shù)是long 類型時(shí)士八,每移動(dòng)1位它的第63位就要被移出并且丟棄容燕。
當(dāng)左移的運(yùn)算數(shù)是byte 和short類型時(shí),將自動(dòng)把這些類型擴(kuò)大為 int 型婚度。
計(jì)算過程:
舉例:8是int型的情況下8<<3結(jié)果等于64蘸秘,相當(dāng)于8×2的3次方
把8轉(zhuǎn)換為二進(jìn)制數(shù)字0000 0000 0000 0000 0000 0000 0000 1000,
把這組數(shù)字左移3位則得到的最終結(jié)果是0000 0000 0000 0000 0000 0000 0100 0000蝗茁,>> 右移運(yùn)算符
表達(dá)式:value >> num
左移的規(guī)則:
符號(hào)位不變醋虏,左邊補(bǔ)上符號(hào)位
按二進(jìn)制形式把所有的數(shù)字向右移動(dòng)對(duì)應(yīng)的位數(shù),低位移出(舍棄)哮翘,高位的空位補(bǔ)符號(hào)位颈嚼,即正數(shù)補(bǔ)零,負(fù)數(shù)補(bǔ)1
當(dāng)右移的運(yùn)算數(shù)是byte 和short類型時(shí)饭寺,將自動(dòng)把這些類型擴(kuò)大為 int 型阻课。
如果要移走的值為負(fù)數(shù),每一次右移都在左邊補(bǔ)1佩研,如果要移走的值為正數(shù)柑肴,每一次右移都在左邊補(bǔ)0霞揉,這叫做符號(hào)位擴(kuò)展(保留符號(hào)位)旬薯,在進(jìn)行右移操作時(shí)用來保持負(fù)數(shù)的符號(hào)。
計(jì)算過程:
35 >> 2(35為int型)35 >> 2結(jié)果等于8适秩,相當(dāng)于8/2的2次方
35轉(zhuǎn)換為二進(jìn)制:0000 0000 0000 0000 0000 0000 0010 0011
把低位的最后兩個(gè)數(shù)字移出:0000 0000 0000 0000 0000 0000 0000 1000
轉(zhuǎn)換為十進(jìn)制: 8>>> 無符號(hào)右移運(yùn)算符
表達(dá)式:value >>> num
無符號(hào)右移的規(guī)則只記住一點(diǎn):忽略了符號(hào)位擴(kuò)展绊序,0補(bǔ)最高位
無符號(hào)右移運(yùn)算符>>> 只是對(duì)32位和64位的值有意義
補(bǔ)充一下之前欠缺的:0x8f,此16進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制位1000 1111硕舆,
通常顏色用16進(jìn)制數(shù)
例如:0xFBFFFFFF,從左往右FB表示透明度,F(xiàn)FFFFF表示顏色
用二進(jìn)制表示就是:
1111 1011 1111 1111 1111 1111