位運算

左移,右移 位運算

  • 最近在用findbugs掃描代碼中的規範問題時,看到了位運算的用處,記錄一下
/**
 * 位運算
 */
@Test
public void testUnsignedOperateAverage() {
    int beginIndex = 3;
    int endIndex = 5;
    int midIndex1 = (beginIndex + endIndex) / 2;
    System.out.println("兩個數求平均值:" + midIndex1);
    System.out.println("使用左移操作得到的值:" + ((beginIndex + endIndex) << 1));
    System.out.println("使用右移操作得到的值:" + ((beginIndex + endIndex) >> 1));
}

運行結果:

↓...start test...↓
兩個數求平均值:4
使用左移操作得到的值:16
使用右移操作得到的值:4
↑...end test...↑

Process finished with exit code 0

重點:
<<:左移運算符,number<<1,相當於number*2;
>>:左移運算符,number>>1,相當於number/2;
>>>:無符號右移,忽略符號位,空位以0補齊
無符號右移的應用場景:
對01111100 11100010 00101111 10101010,按照四位取值,此時需要用到右移和按位與,此時不適合使用>>,而應該使用>>>,因爲如果是負數的話,>>就不會不斷移入有效位,而使用>>>等全移入0時可知數據全部移動完畢

發佈了27 篇原創文章 · 獲贊 22 · 訪問量 5743
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章