Toán tử bitwise trong ngôn ngữ C

Bitwise Operators C Language



Các toán tử theo chiều bit, thường được gọi là mã hóa mức bit, đã bị loại bỏ để chỉ diễn giải dữ liệu ở mức bit. Bitwise thực hiện các hoạt động trên một hoặc thậm chí các mẫu bit bổ sung và số nhị phân ở cấp độ bit. Chúng đã được sử dụng để đẩy nhanh tiến độ ước tính của các phép tính số. Nó bao gồm hai số, một trong số đó là 0 và số kia là 1. Dưới đây là một số toán tử bitwise mà chúng ta sẽ thảo luận trong bài viết của chúng tôi.

Đăng nhập từ hệ thống Linux của bạn và thử phím tắt Ctrl + Alt + T để mở thiết bị đầu cuối bảng điều khiển. Chúng tôi sẽ có một số ví dụ để giải thích rõ hơn về hoạt động của các toán tử bitwise trong ngôn ngữ C. Chúng ta hãy trình bày chi tiết về từng toán tử bitwise riêng biệt.







Bitwise VÀ:

Toán tử bitwise đã được sử dụng để sao chép một bit vào kết quả nếu bit đó có trong cả hai toán hạng lẫn nhau. C hoặc C ++ yêu cầu 2 toán hạng thực hiện AND trên mỗi bit của hai số nguyên đó. Bitwise AND cho kết quả là 1 khi cả hai bit đều có giá trị là 1. Vì vậy, để hiểu cách làm việc, hãy tạo và mở tệp loại C bằng trình soạn thảo Nano. Để làm được điều đó, chúng ta phải sử dụng hướng dẫn nano trong shell như sau:



$nanotest.c



Mã cho toán tử Bitwise AND đã được hiển thị trong hình bên dưới. Tất cả những gì bạn phải làm là chỉ cần viết mã này trong tệp trình soạn thảo GNU nano của bạn test.c như nó vốn có. Mã này có thư viện tiêu đề stdio.h mà không có thư viện này, chúng tôi không thể thực hiện viết mã trong lập trình C. Sau đó, chúng tôi đã tạo một phương thức chính với kiểu trả về của nó là số nguyên. Trong ngôn ngữ C, việc thực thi mã được thực hiện thông qua phương thức chính. Vì vậy, chúng tôi đã khai báo hai biến kiểu số nguyên, x và y, với các giá trị 35 và 13 tương ứng. Sau đó, một biến số nguyên khác đã được chỉ định bằng 0 làm giá trị của nó. Chúng tôi sẽ sử dụng hai biến số nguyên đầu tiên và áp dụng toán tử AND bitwise giữa chúng. Công việc này đã được thực hiện ở dòng tiếp theo trong đó toán tử AND đã được sử dụng làm &, và giá trị kết quả sẽ được lưu trữ trong biến null z. Sau đó, chúng tôi đã sử dụng câu lệnh in để hiển thị giá trị kết quả trong màn hình đầu cuối và phương thức chính sẽ đóng lại. Lưu tệp của bạn bằng phím tắt GNU Ctrl + S và sau đó thoát trình soạn thảo nano qua Ctrl + X từ máy đánh chữ bàn phím.





Vì vậy, đây là thời điểm để biên dịch đoạn mã trên sau khi lưu tệp. Sử dụng hướng dẫn gcc trong giao diện điều khiển của bạn trong khi sử dụng tên tệp là test.c hoặc bất kỳ tên nào bạn đặt tên tệp và nhấn phím Enter. Bạn có thể thấy nó không có lỗi; điều này có nghĩa là mã chính xác theo cách thủ công.



$gcctest.c

Sau khi biên dịch mã, đã đến lúc thực thi mã. Với mục đích này, hãy chạy truy vấn đã nêu bên dưới trong trình bao. Đầu ra hiển thị 1 như một kết quả. Điều này có nghĩa là cả hai biến số nguyên của chúng ta đều có 1 trong một bit của chúng. Đây là lý do tại sao nó trả về 1.

$./a.out

Bitwise HOẶC:

Bây giờ, nó được chuyển sang cho toán tử OR bitwise được xây dựng. Toán tử bitwise trả về kết quả là 1 khi một trong các bit của nó là 1. Nếu cả hai bit của hai số nguyên đều là 0, thì nó cho kết quả là 0. Sau khi nhận được tất cả các bit, sẽ có một tập hợp các bit được tạo ra. Chúng ta phải xem số bit đó được hình thành là bao nhiêu. Vì vậy, hãy mở cùng một tài liệu test.c trước. Nhập và sau đó lưu mã được hiển thị bên dưới vào tệp GNU bằng cách sử dụng phím Ctrl + S. Mã gần giống như ví dụ về toán tử AND bitwise ở trên. Lần này chúng tôi vừa thay đổi giá trị của số nguyên x thành 47 và chúng tôi đã sử dụng toán tử OR, ví dụ: | giữa cả hai biến. Thoát tệp để biên dịch mã.

Sau khi thực thi thành công tài liệu test.c, nó hiển thị 47 bit đầu ra.

$./a.out

Bitwise XOR:

Toán tử bitwise trả về 1 khi cả hai bit số khác nhau. Vì vậy, khi các bit giống nhau, nó sẽ mang lại 0. Dấu ^ sẽ đại diện cho toán tử bitwise. Vì vậy, một lần nữa, hãy mở tài liệu và viết cùng một mã cũ trong trình chỉnh sửa tệp GNU. Lần này chúng ta đã sử dụng toán tử ^ trong hai biến số nguyên và kết quả sẽ được lưu trữ trong biến z khi in ra trong terminal.

Biên dịch và chạy tệp test.c trả về kết quả là 34. Điều này có nghĩa là số nguyên mới 34 được tạo sau khi toán tử XOR đã được áp dụng cho hai biến số nguyên.

$./a.out

Bổ sung Bitwise:

Toán tử này sẽ chỉ được áp dụng cho một biến duy nhất và nó sẽ hoàn nguyên giá trị của số bit. Ví dụ, nó sẽ thay đổi bit 0 thành 1 và 1 thành 0. Viết cùng một đoạn mã trong cùng một tệp nhưng có một chút thay đổi ở dòng 6. Chúng tôi đã gán đảo ngược của x thành z.

Biên dịch tệp và chạy nó. Trong C, kết quả của phần bù Bitwise đã được tăng thêm 1 với dấu âm.

Toán tử Shift trái:

Nó sẽ thay đổi vị trí của các bit ở một mức độ nào đó. Mã tương tự có thể được hiển thị trong hình ảnh được thêm vào- bên dưới. Trong ví dụ này, chúng ta sẽ dịch chuyển 2 bit sang trái.

Kết quả hiển thị 188 dưới dạng giá trị mới được tạo.

$./a.out

Toán tử Shift phải:

Nó hoạt động giống như hoạt động sang trái nhưng theo hướng ngược lại, như được hiển thị trong đoạn mã bên dưới.

Lần này chúng ta có 11 là đầu ra khi dịch chuyển 2 bit sang phía bên phải.

$./a.out

Phần kết luận:

Chúng tôi đã trình bày tất cả 6 toán tử bitwise cơ bản trong mã ngôn ngữ C của chúng tôi trong bài viết này. Tôi hy vọng bạn có được những gì bạn muốn từ hướng dẫn của chúng tôi.