Các phép toán trên bit trong c

     
L>Chương 11: Phép làm việc trên các số nhị phânLập Trình trong C� 2003 KishoriMundargiChương 11:Phép thao tác làm việc trên những số nhị phânNhư sẽ nói sinh hoạt trên, ngôn ngữ lập trình C là 1 ngôn ngữ lập trình sẵn hệ thống. Vì chưng đó, nó mang đến phépcác thao tác trên số nhị phân. Đối với hồ hết người thao tác làm việc liên quan cho lập trình hệ thốngvà đồ họa máy tính, những toán tử bên trên số nhị phân cho phép họ truy vấn vào bộ nhớ màkhông cần phải viết mã nguồn theo ngữ điệu máy, tuy nhiên, trong nhữngcông vấn đề thường ngày, đông đảo toán tử này ít được sử dụng . Trước lúc đi vào chi tiết về các thaotác và các toán tử bây giờ đangcótrong C, bọn họ hãy đàm luận một số điều căn bạn dạng sau đây:Máy tính có thể hiểu được hệ thống số nhị phân.Hệ nhị phân có nghĩa là hệ thống gồm hai chữ số. Hệ nhị phân bao hàm số 0 và 1. Tôicho rằng sinh viên tại đây đã khá rất gần gũi với những khối hệ thống số học tập khác nhau tương tự như cáchchuyển đổitừ hệ thâp phân thanh lịch hệ nhị phân với ngược lại.Trong phần lớn các hệ thống máy tính, một byte bao gồm tám bít. Từng bít hoàn toàn có thể là 0 hoặc 1. Vày đó, mộtbyte là 1 trong chuỗi của rất nhiều số 0 cùng 1.Bít ko kể cùng bên buộc phải của chuỗi byte được hotline là bít có trọng số bé nhất và bít quanh đó cùngbên trái được call là bít tất cả trọng số béo nhất. Số âm được miêu tả theo một phương pháp khác. (Nhớrằng, một số trong những nguyên rất có thể có dấu hoặc không dấu.)Nếu như bít ngoài cùng bên trái là che dấu và nếu nó là 1 trong những thì chữ số đó là số âm, nếu nó là 0thì sẽ là số dương. Toán tử trên che theo như cái tên thường gọi gợi ý, nó được dùng để làm thực hiện đa số thaotác trên chiếc số nhị phân.


Bạn đang xem: Các phép toán trên bit trong c


Xem thêm: Bản Phương Hướng Đại Hội Chi Đoàn Lớp 10, Mẫu Phương Hướng Đại Hội Chi Đoàn



Xem thêm: Hiệp Hội Các Nước Đông Nam Á Asean Bai Giang, Bài 17: Hiệp Hội Các Nước Đông Nam Á (Asean)

Phần nhiều toán tử nhị phân bao gồm trong C được giới thiệu phía dưới đây: &Toán tử AND|Toán tử OR^Toán tử EXOR~Toán tử màn biểu diễn phần bù 1Dịch trái>>Dịch nên Bảng 11.1Các toán tử logic trên bitThao tác luận lý đến hai kết quả, đó là đúng hoặc sai.Trong ký kết hiệu nhị phân, tiên phong hàng đầu thể hiện mang đến Đúng và số 0 diễn tả cho sai. Một trong những nguyên được lưutrữ trong bộ nhớ có thể được coi như như một chuỗi của rất nhiều giá trị đúng và sai.Những toán tử súc tích trên bít chuyển động trên phần đa toán hạng mà theo đó có trọng trách thực hiệntính toán bên trên từng từng bit khiến cho ra công dụng của một trong những nguyên.Toán tử thao tác làm việc bit ANDToán tử and sẽ trả về quý hiếm là Đúng (1), nếu và chỉ còn nếu cả nhị toán hạng đều sở hữu giá trị là1.0 và 000 và 101 & 001 và 11 Bảng 11.2Chương trình 11.1/* lịch trình để minh họa cho toán tử và */#include main ()int a = 25;int b = 77;int c;c = a & b;printf("Value of c is %d ", c);Kết trái của lịch trình như sau :Giá trị của c là 9.Toán tử AND xảy ra được diễn đạt dưới đây: 00000000000110012500000000010011017700000000000010019 Table 11.3Toán tử và được thực hiện cho hồ hết thao tácmặt nạ . Toán tử này hoàn toàn có thể được dùng để làm gán số 0 vào một số trong những bít đặc biệt.Bạn cũng có thể sử dụng toán tử và để kiểm soát xem một số trong những nguyênlà số lẻ giỏi chẵn. Khi chúng ta tiến hành toán tử và trên một số nguyên cùng với 1,thì hiệu quả luôn luôn là đúng ví như bít ngoại trừ cùng bên phải của số nguyên sẽ là 1.Đây là trường hòa hợp của số nguyên lẻ, đối với trường hòa hợp số nguyên chẵn thì bít bên cạnh cùngbên nên sẽ là số 0.Toán tử ORTrong làm việc OR cũng vậy, chuỗi nhị phân của nhị toán hạng được so sánh theo từng bít. Mỗi che trong toán hạng đầu là một hoặc mỗi bít trong toán hạng sản phẩm công nghệ hai sẽ là 1 trong sẽ cho ra 1 trong các bít tươngứngtrong kết quả.0 | 000 | 111 | 011 | 11 Bảng 11.3Toán tử OR được dùng khi bạn có nhu cầu gán số 1 cho một vài ba bít đặc trưng nào đó.Toán tử XORToán tử XOR sẽ cho ra 1 nếu 1 trong những hai bịt là hàng đầu nhưng chưa phải cảhai. 0 ^ 000 ^ 111 ^ 011 ^ 10 Bảng 11.4Một điều đặc biệt quan trọng đáng để ý đó là bất kể giá trị nào khi đã được XOR với thiết yếu nó vẫn chora hiệu quả là 0. Những người lập trình ngôn ngữ Assembly thường áp dụng điều này nhằm kiểmchứng hai cực hiếm có bằng nhau không.Toán tử phần bù số 1Toán tử phần bù số một trong các C được miêu tả như dấu té ~Nó sẽ phủ định luận lí từng bit của toán hạng của nó,Nói theo phong cách khác, tất cả những giá trị 0 sẽ biến 1 và gần như giá trị 1 sẽ trở nên 0. Đâylà toán tử một ngôi được sử dụng trên một hằng số nguyên hoặc trên một biểu thức.Ví dụ~ 12 ~ (Total - 2) Ở đây, Total nên là một số nguyênToán tử phần bù được dùng để giúp đỡ chương trình linh động hơn. Lấy một ví dụ như, nếu chúng ta muốn gángiá trị của bít ngoài cùng bên buộc phải của một số trong những nguyên mang đến 0 bên trên cả hai thiết bị 16 bịt và 32 bít,một bí quyết khôn ngoan kia là chúng ta AND số đó với một trong những bù của nó.Total& = ~1; Nó sẽ trả kết quả ở dạng của số bù 1 với tất cả những bịt 1 ở ngoại trừ cùng phía trái cầnthiết để phủ đầy kích cỡ của số nguyên. Nó sẽ bao hàm 15 số bít ở không tính cùng phía bên trái trênmột máy gồm 16 che số nguyên, với 31 che trên một sản phẩm với 32 đậy số nguyên.Toán tử dịch chuyểnToán tử dịch trái tuyệt dịch phải tương đồng với phép nhân và chia cho 10.Khi họ chia một trong những cho 10, chúng ta sẽ dịch chuyển những số lượng một lần về phía đề xuất bằngcách bảo quản dấu chấm thập phân.Khi bọn họ nhân một số trong những với 10, chúng ta dịch các số về bên trái với thêmvào số 0 bên phải.Toán tử dịch trái lúc toán tử dịch trái được tiến hành trên một toán hạng, hầu như bit của toán hạng được dịchvề mặt trái. Những bít bị chuyển sang trái bị mất với 0 cụ vào phía bên cần của toán hạng.If Salary là 1 trong biến với mức giá trị vào hệ chén bát phân là 6 , thì toántử dịch trái sẽ mang đến ra hiệu quả là 14 vào hệ chén bát phân. Lịch trình 11.2/* công tác minh họa mang đến toán tử dịch bịt trái */ #include main (){unsigned int salary = 06;salary Toán tử dịch bit bắt buộc >>Trong thao tác làm việc dịch bít phải, bịt ở bên cần bị dịch chuyển sẽ bị mất và tùy nằm trong vào loạicủa lắp thêm tính, hàng đầu hay số 0 sẽ được thêm vào sinh sống bít ko kể cùng bên trái.Toán tử dịch rời cũng thường được nhắc tới như chuyển phiên trái cùng xoayphải.Một số link hữu dụng:Eddie"sbasic guide to lớn C Programmi