Hướng dẫn thực hành môn Kiến trúc máy tính & Hợp Ngữ - Các thao tác xử lý trên bit

Trong ngôn ngữ máy tính, các phép toán thao tác bit thực hiện tính toán (theo từng bit)
trên một hoặc hai chuỗi bit, hoặc trên các số nhị phân.
Với nhiều loại máy tính, việc thực thi các phép toán thao tác bit thường nhanh hơn so với
khi thực thi các phép toán cộng, trừ, nhân, hoặc chia.
1. Toán tử and
- Ký hiệu trong C ++: ‘&’
- Ý nghĩa: đây là phép nhân logic trên các bit, kết quả nhân logic tương ứng trên 
pdf 5 trang xuanthi 28/12/2022 1160
Bạn đang xem tài liệu "Hướng dẫn thực hành môn Kiến trúc máy tính & Hợp Ngữ - Các thao tác xử lý trên bit", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.

File đính kèm:

  • pdfhuong_dan_thuc_hanh_mon_kien_truc_may_tinh_hop_ngu_cac_thao.pdf

Nội dung text: Hướng dẫn thực hành môn Kiến trúc máy tính & Hợp Ngữ - Các thao tác xử lý trên bit

  1. lvlong@fit.hcmus.edu.vn KIẾN TRÚC MÁY TÍNH – HỢP NGỮ 3. Toán tử not - Ký hiệu trong C ++ : ‘~’ - Ý nghĩa: đây là phép toán đảo bit. Đảo mọi giá trị bit 0 thành bit 1 a b ~a ~b 0 0 1 1 0 1 1 0 1 0 0 1 1 1 0 0 4. Toán tử xor - Ký hiệu trong C ++ : ‘^’ - Ý nghĩa: đây là phép tổng loại trừ logic trên các bit, kết quả thực hiện tương ứng trên từng cặp bit của 2 dãy bit như bảng sau: a b a ^ b 0 0 0 0 1 1 1 0 1 1 1 0 - Quy tắc nhớ: kết quả tổng loại trừ logic 2 bit bằng 0 khi cả hai bit bằng 0 hoặc bằng 1. Các trường hợp khác kết quả bằng 1. 5. Toán tử dịch trái - Ký hiệu trong C ++ : ‘<<’ - Ý nghĩa: x << i : dịch x sang trái i bit - VD: o x có dãy bit như sau: 01010101. o Thực hiện dịch x sang trái 3 bit: x << 3 o Kết quả dãy bit nhận được: 10101000 -2-
  2. lvlong@fit.hcmus.edu.vn KIẾN TRÚC MÁY TÍNH – HỢP NGỮ III. Ví dụ ứng dụng: 1. Ví dụ 1: viết chương trình tìm dãy bit nhị phân của số nguyên 4 byte có dấu #include #include // Hàm lấy 1 bit của x tại vị trí i tính (từ phải sang) bool GetBit(int x, int i) { return (x>>i) & 1; } // Tìm dãy bit của x và gán vào mảng bit kết quả a void TimDayBit(int x, bool a[32]) { int k=0; for(int i = 31; i>=0; i ) { bool bit = GetBit(x,i); a[k++] = bit; } } // Hàm xuất dãy bit void XuatDayBit(bool a[32]) { for(int i = 0; i < 32; i ++) printf("%d",a[i]); } void main() { // Nhập số nguyên cần tính dãy bit int x; //số nguyên có dấu printf("Nhap so nguyen: "); scanf("%d",&x); // Tìm dãy bit của x bool a[32]; TimDayBit(x,a); // Xuất dãy bit tìm được printf("Day nhi phan la: "); XuatDayBit(a); getch(); } -4-