Dịch chuyển nhị phân (C++)


Hoạt động bit

Tất cả các số trong bộ nhớ máy tính được lưu trữ ở dạng nhị phân, tức là dưới dạng một chuỗi các số 0 và 1. Để lưu trữ các số trong bộ nhớ máy tính, một số bit hữu hạn được sử dụng. Do số này, máy tính có phạm vi giới hạn và kết quả tính toán có thể không chính xác. Một số nguyên có thể được lưu trữ trong bộ nhớ 8, 16, 32 hoặc 64 bit. Mỗi bit bổ sung sẽ mở rộng phạm vi giá trị có thể thêm 2. 
Các phép toán với số dương và số âm được thực hiện trong bộ xử lý bằng cùng một thuật toán.

Với sự trợ giúp của các hoạt động logic theo bit, bạn có thể kiểm soát từng bit trong thanh ghi của bộ xử lý và thiết bị bên ngoài. 
  <đầu>



Thao tác AND
Sử dụng thao tác "AND" bạn có thể đặt lại (đặt thành 0) bit có mặt nạ là 0! 
 
Mặt nạ – một hằng số xác định phạm vi hoạt động logic trên các bit của một số nhiều bit.

D - dữ liệu, M - mặt nạ

 

Thao tác HOẶC
Có thể sử dụng thao tác "HOẶC" để ghi 1 vào các bit có mặt nạ là 1!

 

Thao tác độc quyền HOẶC
Sử dụng thao tác "XOR" bạn có thể đảo ngược các bit có mặt nạ là 1!


 

Sang Trái
Một phép dịch logic (theo bit) trái 1 bit sẽ nhân đôi một số nguyên dương.

 

Dịch sang phải
Boolean (bitwise) .shift sang phải 1  chia một số nguyên dương cho 2.


Do dịch chuyển phải đặt bit dấu trên các vị trí trống nên dấu của x có thể được xác định bằng cách dịch chuyển phải toàn bộ độ dài của biến.

Thao tác C++ Điểm đến
a & b Bitwise And cho ab
a | b Bitwise HOẶC cho ab
a ^ b HOẶC cho ab
~a Bit đảo ngược cho a
a << b Chuyển bit sang trái của a thành b
a >> b Dịch chuyển sang phải theo từng bit của a thành b