1. 程式人生 > >Java筆記:位運算

Java筆記:位運算

ring stat 意義 clas 提升 str pub style sys

一、數據存儲

二進制數在內存中以補碼的形式存放。正數的反碼、補碼均為本身。負數的反碼為符號位不變且其余位取反,補碼為反碼+1。

二、位運算

①按位取反:反轉操作數中的所有位。

②按位與:僅當兩個操作數都是1,結果為1。否則為0。

③按位或:只要有一個操作數是1,結果為1。否則為0。

④按位異或:只有一個操作數是1,結果為1。否則為0。

⑤左移:將不包括符號位的所有數值向左移動指定次數,右邊補充0。每左移一位相當於*2。

⑥右移:將不包括符號位的所有數值向右移動指定次數,左邊補充0。每右移一位相當於/2。

⑦無符號右移:將包括符號位的所有數值向右移動指定次數,僅對寬度為32、64的數值有意義,更小的數值會自動提升。

三、示例

class Solution {
    public static void main(String[] args) {
        byte a = 42;//00101010
        byte b = 15;//00001111
        System.out.println(~a);//按位取反結果為11010101 補碼為10101011
        System.out.println(a & b);//按位與結果為00001010
        System.out.println(a | b);//按位或結果為00101111
        System.out.println(a ^ b);//
按位異或結果為00100101 byte c = 64;//01000000 System.out.println(c << 1);//左移1位結果為10000000 System.out.println(c >> 1);//右移1位結果為00100000 int d = -1;//11111111 111111111 111111111 111111111 System.out.println(d >>> 24);//無符號右移24位結果為00000000 00000000 00000000 11111111 } }

Java筆記:位運算