Trong một trong những bài viết trước, chúng tôi đã thảo luận về những điều cơ bản của toán tử bitwise. Tôi hy vọng bạn đã đọc qua bài viết đó và giờ đã sẵn sàng để chứng kiến và hiểu một số ví dụ sử dụng thực tế của các toán tử này. Vì vậy, không cần phải nói thêm nữa, chúng ta hãy bắt đầu.
Ví dụ, nếu 'a' và 'b' là các biến có giá trị cần được hoán đổi và 'c' là biến tạm thời, thì logic chuẩn sẽ diễn ra như sau:
Nhưng bạn có biết toàn bộ quá trình hoán đổi này có thể được thực hiện thông qua các toán tử bitwise không? Đúng vậy, và logic, trong trường hợp đó, thậm chí không yêu cầu biến thứ ba. Đây là mã:
Đây là đầu ra:
Đây là kết quả đầu ra:
Đây là mã:
Đây là đầu ra:
4. Chuyển đổi số thập phân sang dạng nhị phân của nó
Các toán tử bitwise cũng có thể được sử dụng để chuyển đổi số thập phân sang dạng nhị phân của nó. Sau đây là một logic cho nó:
1. Hoán đổi giá trị của hai biến
Tôi chắc rằng bạn đã biết về logic hoán đổi giá trị của hai biến. Nó bao gồm việc lấy một biến thứ ba để lưu trữ tạm thời một giá trị và sau đó gán giá trị đó cho một trong các biến (có giá trị ban đầu đã được gán cho biến kia).Ví dụ, nếu 'a' và 'b' là các biến có giá trị cần được hoán đổi và 'c' là biến tạm thời, thì logic chuẩn sẽ diễn ra như sau:
Mã:
c = a;
a = b;
b = c;
Mã:
#include
int main()
{
int a, b;
printf("Nhập số đầu tiên: ");
scanf("%d", &a);
printf("Nhập số thứ hai: ");
scanf("%d", &b);
printf("Theo đầu vào của bạn, a = %d và b = %d", a,b);
a = a ^ b;
b = a ^ b;
a = a ^ b;
printf("\nSau khi hoán đổi, a = %d và b = %d", a,b);
return 0;
}
Mã:
Nhập số đầu tiên: 7
Nhập số thứ hai: 2
Theo đầu vào của bạn, a = 7 và b = 2
Sau khi hoán đổi, a = 2 và b = 7
2. Kiểm tra số lượng nhị phân '1' trong một số
Đôi khi bạn có thể thấy mình trong tình huống cần đếm số bit được đặt thành '1' trong một số. Bạn sẽ vui mừng khi biết rằng bạn có thể dễ dàng thực hiện việc này bằng cách sử dụng các toán tử bitwise. Đây là logic:
Mã:
#include
int main()
{
int a, num_of_bits = 0;
printf("Nhập số: ");
scanf("%d", &a);
while(a)
{
if(a & 1)
num_of_bits++;
a = a >> 1;
}
printf("\nSố lượng bit nhị phân 1 trong số này là %d", num_of_bits);
return 0;
}
Mã:
Nhập một số: 5
Số lượng bit nhị phân 1 trong số này là 2
3. Chương trình C để kiểm tra xem vị trí bit đã cho có phải là 1 hay không
Đôi khi, đặc biệt là khi làm việc trên mã liên quan đến mạng máy tính (giao thức, v.v.), bạn được yêu cầu kiểm tra xem vị trí bit cụ thể có được đặt thành 1 hay không. Điều này có thể dễ dàng thực hiện bằng cách sử dụng các toán tử bitwise.Đây là mã:
Mã:
#include
int main()
{
int num, position, temp;
printf("Nhập một số: ");
scanf("%d", &num);
printf("Nhập vị trí bit (giữ nguyên số 0 làm chỉ số cơ sở và số 31 làm số tối đa): ");
scanf("%d", &position);
if(((num>>position)&1) == 1)
printf("\nBit tại vị trí là 1");
else
printf("\nBit tại vị trí là 0");
return 0;
}
Mã:
Nhập một số: 2
Nhập vị trí bit (giữ nguyên số 0 làm chỉ số cơ sở và 31 làm số tối đa): 3
Bit ở vị trí là 0
Các toán tử bitwise cũng có thể được sử dụng để chuyển đổi số thập phân sang dạng nhị phân của nó. Sau đây là một logic cho nó:
Mã:
#include
int main()
{
int num, i = 0, temp = 0;
int bin[32] = {0}; // lệnh này sẽ khởi tạo tất cả các phần tử mảng thành 0
/* Nhập số từ người dùng */
printf("Nhập bất kỳ số nào: ");
scanf("%d", &num);
for(i =31; i>=0; i--)
{
if((num & 1) == 1)
{
bin[i] = 1;
num = num>>1;
}
printf("Dạng nhị phân của số bạn nhập là: ");
for(i=0; i