2012-07-07 43 views

Trả lời

6

Toán tử đầu tiên ký hiệu mở rộng giá trị, dịch chuyển thành bản sao bit dấu; thứ hai luôn thay đổi theo số không.

Lý do cho việc này là mô phỏng các số nguyên không dấu cho mục đích thực hiện thao tác bit, bù một phần cho việc thiếu các loại tích phân không dấu trong Java.

11

>> là dịch chuyển số học (đã ký), >>> là sự dịch chuyển hợp lý (chưa ký), như được mô tả trong Java tutorial. Hãy thử chúng trên một giá trị tiêu cực, và bạn sẽ thấy một sự khác biệt.

3

This explains it really well. Trên cùng một trang cũng có một số example ngắn.

Nhưng đối với một bản tóm tắt ngắn gọn thật:

<< signed left shift - shifts a bit pattern to the left 
    0 0 1 1 1 => 0 1 1 1 0 

>> signed right shift - shifts a bit pattern to the right 
    0 0 1 1 1 => 0 0 0 1 1 

>>> unsigned right shift - shifts a zero into the leftmost position 
    1 1 1 0 => 0 0 1 1 

~ unary bitwise complement operator 
    A | Result 
    0 | 1 
    1 | 0 
    0 | 1 
    1 | 0 

& bitwise and 
    A | B | Result 
    0 | 0 | 0 
    1 | 0 | 0 
    0 | 1 | 0 
    1 | 1 | 1 

^ xor 
    A | B | Result 
    0 | 0 | 0 
    1 | 0 | 1 
    0 | 1 | 1 
    1 | 1 | 0 

| inclusive or 
    A | B | Result 
    0 | 0 | 0 
    1 | 0 | 1 
    0 | 1 | 1 
    1 | 1 | 1 
Các vấn đề liên quan