Toán tử dịch phải và dịch trái
Bài học 7 trên 17 trong khóa học Thao tác bit của Coddy.
Toán tử dịch bit dùng để dịch các bit sang trái hoặc sang phải.
Toán tử dịch phải ( >> )
Toán tử này nhận hai toán hạng. Giá trị thứ nhất là số có các bit cần dịch sang phải, còn toán hạng thứ hai là số vị trí cần dịch. Về cơ bản, ta đẩy các số 0 từ phía MSB vào số nhị phân.
Dịch phải được ký hiệu là '>>' .
Dịch phải tương đương với việc chia số đó cho một lũy thừa của hai. Hãy cùng tìm hiểu qua hình minh họa.

Ta lấy (11)10 rồi dịch sang phải 3 lần, kết quả là (1)10 . Ta cũng có thể tính bằng cách lấy phần nguyên của (11 / 23), kết quả chính là (1)10.
Cách dùng:
int a = 11;
a>>3;
OUTPUT: 1Ở đây, a là số có các bit cần dịch, còn 3 là số vị trí cần dịch sang phải.
Toán tử dịch trái ( << )
Toán tử này cũng nhận hai toán hạng. Toán hạng thứ nhất là số có các bit cần dịch sang trái, còn toán hạng thứ hai là số vị trí cần dịch. Về cơ bản, ta đẩy các số 0 từ phía LSB vào số đó. Dịch trái được ký hiệu là '<<' . Dịch trái tương đương với việc nhân số đó với một lũy thừa của hai. Hãy cùng tìm hiểu qua ví dụ tương tự.

Ta lấy (11)10 rồi dịch sang phải 3 lần, kết quả là (88)10 . Ta cũng có thể tính bằng cách nhân (11)10 với 23, kết quả là (88)10. Lưu ý rằng trong trường hợp này, ta không thể xóa các bit MSB. Dịch trái sẽ làm tăng số bit và đẩy các số 0 từ phía LSB vào, nhưng không xóa các bit MSB. Còn khi dịch phải, ta đẩy các số 0 từ phía MSB vào và các bit bên trái sẽ bị loại bỏ.
Cách dùng:
int a = 11;
a<<3;
OUTPUT: 88Thử thách
DễNhân đôi số đã cho (đầu vào) bằng toán tử dịch bit.
Tự làm thử
#include <iostream>
#include <vector>
using namespace std;
int Double(int num) {
// Viết code tại đây
}Tất cả bài học trong Thao tác bit
1Giới thiệu và kiến thức cơ bản
Thao tác bit là gì?Tại sao cần thao tác bit?Số nhị phân và số thập phânToán tử NOT và ORToán tử ANDToán tử XORToán tử dịch phải và dịch tráiTóm tắt các toán tử bitTự luyện tập: Trình biên dịch C++ online
Kiểm tra một phép chuyển đổi: Công cụ chuyển đổi hệ cơ số