Cả hai dịch bit sang phải; khác ở bit điền vào bên trái:
- >> (signed / arithmetic): điền bằng bit dấu → số âm vẫn âm.
- >>> (unsigned / logical): luôn điền 0 → kết quả không bao giờ âm.
java
-8 >> 1; // -4
-8 >>> 1; // 2147483644 (điền 0 vào bit trái cùng)
8 >> 1; // 4
8 >>> 1; // 4 (số dương: hai toán tử như nhau)Với số dương, hai toán tử cho kết quả giống hệt. >>> chỉ có ý nghĩa khi bạn coi bit là dữ liệu thô (hash, mask, cờ) trên int/long, không phải số có dấu.
Lưu ý: không có <<< — dịch trái luôn điền 0 nên chỉ cần <<.