III. BIỂU DIỄN THÔNG TIN TRÊN MÁY TÍNH

1.Biểu diễn các ký tự

    Một trong các phương pháp để biểu diễn các ký tự trong máy tính là thiết kế một bộ mã. Ý nghĩa của cách thiết kế này là các ký tự khác nhau sẽ được đặc trưng bởi một nhóm bit duy nhất khác nhau, bằng cách này thông tin sẽ được mã hóa thành một chuỗi bit trong bộ nhớ hoặc ở các thiết bị lưu trữ. Tuy nhiên, sẽ có nhiều bộ mã khác nhau. Ðể giải quyết vấn đề này, Viện Chuẩn Hóa Hoa Kỳ (American National Standards Institute) đã đưa ra bộ mã chuẩn trong giao tiếp thông tin trên máy tính gọi là bộ mã ASCII (American Standard Code for Information Interchage) và đã trở thành chuẩn công nghiệp cho các nhà sản xuất máy tính. Bộ mã này dùng 7 bit để biểu diễn các ký tự, tuy vậy mỗi ký tự trong bảng mã ASCII vẫn chiếm hết một byte khi thực hiện trong bộ nhớ máy tính, bit dư ra sẽ bị bỏ qua hoặc được dùng cho biểu diễn một cho ký tự đặc biệt. Trong bảng mã ASCII sẽ bao gồm các ký tự chữ hoa, thường, ký tự số, ký tự khoảng trắng,...

Ví dụ

dãy bit sau là biểu diễn của chuỗi ký tự "Hi Sue "

Figure03_001.jpg (29141 bytes)

 

 

 

 

    Hiện nay bảng mã ASCII vẫn là bảng mã được sử dụng nhiều nhất. Một bảng mã khác cũng không kém phần được ưa chuộng là EBCDIC (Extended Binary Code Decimal Interchange Code) là bộ mã ở đó mỗi ký tự được biểu diễn với 8 bit, bộ mã này của công ty IBM.

2. Biểu diễn giá trị của các con số

    Mặc dù phương pháp lưu trữ thông tin như là sự mã hóa các ký tự bằng các dãy bit, nhưng nó dường như không hiệu quả khi lưu trữ dữ liệu thuần số. Chúng ta hãy xem tại sao điều này xảy ra? Chúng ta muốn lưu trữ số 25, nếu dùng bảng mã ASCII để biểu diễn thì mỗi ký số sẽ cần đến một byte lưu trữ do đó ta cần tới 16 bit lưu trữ. Hơn thế nữa, đối với các con số lớn hơn muốn lưu trữ ta phải cần phải dùng từ 16 bit trở lên. Một phương pháp hiệu quả hơn để lưu trữ giá trị cho với dữ liệu là số ở máy tính là dùng hệ nhị phân, phương pháp này dựa trên ví dụ sau:

    Một đồng hồ đo kilomet của xe, khi xe còn mới thì đồng hồ chỉ ở mức 0000000

Figure03_002.jpg (10518 bytes)

    Mỗi số 0 đặc trưng cho một vòng quay, vòng quay sẽ nhận lần lượt các con số 1, 2, 3, 4, 5, 6, 7, 8, 9. Khi xe bắt đầu chạy thì vòng quay bên phải nhất sẽ bắt thay đổi cho đến khi chỉ số ở đồng hồ là 00000009

Figure03_003.jpg (39239 bytes)

    Vào thời điểm tiếp theo vòng quay phải nhất sẽ đẩy vòng quay kế lên một đơn vị, kết quả là vòng quay phải nhất đã quay được một vòng và sẽ trở về 0. Lúc đó chỉ số ở đồng hồ như sau: 00000010

Figure03_004.jpg (17285 bytes)

    Khi đó xe tiếp tục chạy và vòng quay phải nhất sẽ tiếp tục thay đổi cho đến 9 và sau đó sẽ đẩy vòng quay kế lên 1, khi đó chỉ số đồng hồ chuyển từ 00000019 thành 00000020

    Phương pháp đếm trên hệ nhị phân cũng giống như quá trình trên, mỗi vòng chỉ có 0 và 1 khi đó 0 thay thế cho 9. Nếu đồng hồ kilomet dựa trên hệ đếm nhị phân thì chúng sẽ xuất hiện lần lượt như sau 

00000000

00000001

00000010

00000011

00000100

00000101

00000110

    Sự thay đổi chỉ số trên thực chất là quá trình đếm từ 0 đến 6, nếu thay đổi từ 00000011 thành 00000100 thì cũng giống như chỉ số đồng hồ chuyển từ 00000099 thành 00000100. Nên nhớ rằng việc chuyển đổi từ 9 thành 0 ở đồng hồ tương tự cho chuyển đổi từ 1 thành 0 khi ở hệ nhị phân.

    Quay trở lại vấn đề biểu diễn giá trị số khi dùng hệ nhị phân, ta nhận thấy một byte có thể lưu trữ một số nguyên có giá trị trong khoảng từ 0 đến 255 (00000000 đến 11111111), với 2 byte có thể lưu trữ một số nguyên có giá trị từ 0 đến 65535. Cách làm này sẽ làm tăng hiệu quả khả năng lưu trữ các số nguyên so với cách dùng một byte cho một chữ số trong bảng mã ASCII.

    Một lý do khác sâu xa hơn cho việc lưu trữ thông tin ở dạng số khi dùng hệ nhị phân hay hơn dùng bảng mã, đó là hệ thống nhị phân mô tả chính xác kỹ thuật lưu trữ dùng bit trong máy tính. Ngoài ra ta có thể sử dụng hệ nhị phân để biểu diễn các số nguyên âm với phương pháp bù 2 (two’s complement notation) hoặc dùng phương pháp dấu chấm động (floating point notation) để biểu diễn hỗn số. Tuỳ theo giá trị của số mà ta có phương pháp biểu diểơn khác nhau. Ở đây ta có hai khái niệm là tràn số (overflow) đó là khi giá trị của số qua lớn vượt quá số lượng bit biểu diễn của chúng hoặc làm tròn (round-off) xảy ra khi phân số có giá trị bị làm tròn dẫn đến sai số.

    Các số biểu diễn ở hệ nhị phân sẽ là một chuỗi bit, ứng với mỗi vị trí bit được gán một trọng số. Các trọng số này được xác định từ phải sang trái với các giá trị là 1, 2, 4, 8,... Với vị trí các bit tương ứng 0, 1, 2, 3,... Dựa theo qui luật : số sau sẽ bằng 2 lần số trước, ví dụ với biểu diễn nhị phân 100101 là biểu diễn nhị phân của 37.

Figure_B1_002.jpg (34492 bytes)

    Phương pháp chuyển đổi giữa hệ thập phân và nhị phân bạn đọc có thể tham khảo ở phần 1. Sau đây chúng ta cùng tìm hiểu các thao tác xử lý khác trên hệ nhị phân.

3. Cộng nhị phân

    Trong hệ nhị phân thao tác cộng cũng giống như thao tác cộng trong hệ thập phân với một số qui tắc sau

0 + 0 = 0 0 + 1 = 1
1 + 0 = 1 1 + 1 = 10

    Khi cộng vẫn thực hiện cộng các cột từ phải sang trái, ứng với mỗi cột ta cộng 2 số theo qui tắc trên, nếu có nhớ thì cộng nhớ sang cột kế bên

Ví dụ :

cho 2 dãy bit

 

0

0

1

1

1

0

1

0

 

+

0

0

0

1

1

0

1

1

 
               

1

 

 

 

0

0

1

1

1

0

1

0

 

+

0

0

0

1

1

0

1

1

Nhớ 1

             

0

1

 

 

 

0

0

1

1

1

0

1

0

 

+

0

0

0

1

1

0

1

1

 

            1

0

1

 

 

 

0

0

1

1

1

0

1

0

 

+

0

0

0

1

1

0

1

1

Nhớ 1

          0 1

0

1

 

 

 

0

0

1

1

1

0

1

0

 

+

0

0

0

1

1

0

1

1

Nhớ 1

        1 0 1

0

1

 

 

 

0

0

1

1

1

0

1

0

 

+

0

0

0

1

1

0

1

1

Nhớ 1

      0 1 0 1

0

1

 

 

 

0

0

1

1

1

0

1

0

 

+

0

0

0

1

1

0

1

1

 

    1 0 1 0 1

0

1

 

 

 

0

0

1

1

1

0

1

0

 

+

0

0

0

1

1

0

1

1

 

  0 1 0 1 0 1

0

1

 

 

 

0

0

1

1

1

0

1

0

 

+

0

0

0

1

1

0

1

1

 

= 0 1 0 1 0 1

0

1

 

Các phép toán khác ta cũng thực hiện tương tự.

    Khi nghiên cứu kỹ thuật biểu diễn các số thông qua biểu diễn số trong hệ nhị phân đại diện cho các bit, ta chỉ đề cập đến các số nguyên dương, còn các số âm thì sao? Chính điều này ta cần có một hệ có thể biểu diễn cho cả số âm và số dương. Các nhà toán học trong thời gian dài đã quan tâm đến hệ thống biểu diễn số, nhiều ý kiến đã được đưa ra, trong các ý kiến đó, có một số ý kiến rất phù hợp với khả năng thiết kế các mạch điện trong máy tính, và hầu hết các ý kiến này vẫn dựa trên hệ nhị phân nhưng có một số biến đổi đó là hệ nhị phân có dấu. Có ba cách biểu diễn một số âm ở hệ nhị phân có dấu đó là : phương pháp dấu lượng.

4. Phương pháp dấu lượng (sign - magnitude)

    Theo cách biểu diễn này, bit cực trái được dùng làm bit dấu (1 là dấu + và 0 là dấu - ) các bit còn lại biểu diễn độ lớn của số.

Ví dụ:

với mẩu là 4 bit thì các số biểu diễn như sau:

Mẩu bit

Giá trị được biểu diễn

1111

7

1110

6

1101

5

1100

4

1011

3

1010

2

1001

1

1000

0

0111

-1

0110

-2

0101

-3

0100

-4

0011

-5

0010

-6

0001

-7

0000

-8

    Qui tắc 5

Phương pháp để biểu diễn một số âm về dạng nhị phân có dấu với mẩu K bit là lấy số cần biểu diễn cộng thêm 2K-1 sau đó biểu diễn chúng ở hệ nhị phân.

Ví dụ:

với số +5 trong mẩu 4 bit thì biểu diễn là 5 + 8 =13 sẽ là 1101

với số -5 trong mẩu 4 bit thì biểu diễn là -5 + 8 =3 sẽ là 0011

Ngoài cách biểu diễn bằng dấu lượng các nhà toán học còn đưa ra 2 cách biểu diễn sau:

 

5. Phương pháp biểu diễn số bù 1 (one’s complement)

    Theo cách biểu diễn này vẫn dùng bit cực trái làm bit dấu nhưng với qui định có thay đổi là 0 cho số dương và 1 cho số âm. Ðể biểu diễn số n theo dạng bù 1 ta thực hiện các thao tác sau :

    Qui tắc 6 :

Biểu diễn dưới dạng nhị phân của trị tuyệt đối n theo mẩu k bit cố định cho trước. Nếu n < 0 thì đổi 1 thành 0 và ngược lại trong dãy số nhị phân.

Ví dụ:

với n = 5 dùng mẩu 4 bit thì biễûu diễn theo phương pháp bù 1 là 0101

n = -5 dùng mẩu 4 bit thì biễûu diễn theo phương pháp bù 1 là 1010

với n = 6 dùng mẩu 4 bit thì biễûu diễn theo phương pháp bù 1 là 0110

n = -6 dùng mẩu 4 bit thì biễûu diễn theo phương pháp bù 1 là 1001

nếu biểu diễn nhị phân của 6

0

1 1 0

thì biểu diễn số bù 1 của   -6 sẽ là  

1

0 0

1

6. Phương pháp biểu diễn số bù 2 (two’s complement)

    Theo cách biểu diễn này vẫn sử dụng bit cực trái làm bit dấu giống như bù 1, nhưng có một số khác biệt khi đổi sang hệ nhị phân có dấu, các buớc thực hiện như sau :

    Qui tắc 7 :

Biểu diễn dưới dạng nhị phân của trị tuyệt đối n theo mẩu k bit cố định cho trước. Nếu n < 0 thì bắt đầu từ phải qua trái giữ nguyên các bit cho đến khi gặp bit có giá trị là 1 đầu tiên, sau đó các bit tiếp theo bên trái bit 1 đầu tiên đó đổi 1 thành 0 và ngược lại.

Ví dụ :

cho n = -6 thì biểu diễn nhị phân của trị tuyệt đối của n cho mẩu 4 bit là 0110 khi đó biểu diễn của số bù 2 cho -6 là 1010

Biểu diễn số bù 2 qua mẩu 4 bit

Mẩu bit

Giá trị được biểu diễn

0111

7

0110

6

0101

5

0100

4

0011

3

0010

2

0001

1

0000

0

1111

-1

1110

-2

1101

-3

1100

-4

1011

-5

1010

-6

1001

-7

1000

-8

Thực chất số biểu diễn dưới dạng bù 2 là số biểu diễn ở bù 1 sau đó ta cộng thêm 1.

Ví dụ :

Số -6 có biểu diễn bù 1 là 1001 nếu ta lấy số bù 1 này cộng thêm 1 thì kết quả là 1001 + 1 = 1010 đây chính là dạng bù 2

Hình vẽ sau sẽ minh hoạ biểu diễn số bù 2 cho số -6 :

nếu biểu diễn nhị phân của 6

0

1 1 0

thì biểu diễn số bù 1 của   -6 sẽ là  

1

0 0

1

cộng thêm 1

+ 1

thì biểu diễn số bù 2 của   -6 sẽ là  

=

1

0 1

0

7. Phép cộng khi số được biểu diễn ở bù 1 và bù 2

    Qui tắc 8:

Ðối với số dạng bù 1 khi thực hiện phép cộng ta vẫn thực hiện như phép toán tương ứng trên hệ nhị phân, nếu ở 2 bit cực trái khi thực hiện phép cộng mà phát sinh bit nhớ thì sẽ cộng nhớ vào kết quả.

ví dụ 1 :

-6 biểu diễn ở bù 1 với mẩu 4 bit là 1001

4 biểu diễn ở bù 1 với mẩu 4 bit là 0100

Kết quả phép cộng ở dạng bù 1 là 1101 (là biểu diễn của -2 ở bù 1)

-6

1

0

0

1

+

4

+

0

1

0

0

-2

1

1

0

1

-2 ở bù 1

ví dụ 2 :

-6 biểu diễn ở bù 1 với mẩu 5 bit là 11001

-4 biểu diễn ở bù 1 với mẩu 5 bit là 11011

Kết quả phép cộng ở dạng bù 1 là 10100 và còn nhớ 1 khi cộng 2 bit cực trái khi đó kết quả sẽ là 10100 + 1 = 10101 là biểu diễn của số -10 ở dạng bù 1.

 

-6

1

1

0

0

1

+

-4

+

1

1

0

1

1

1

0

1

0

0

+

1

Nhớ 1

-10

1

0

1

0

1

-10 ở bù 1

    Qui tắc 9

Ðối với bù 2 ta vẫn thực hiện như phép cộng nhị phân, nhưng nếu ở 2 bit cực trái phát sinh bit nhớ thì bỏ.

ví dụ 1 :

-6 biểu diễn ở bù 2 với mẩu 4 bit là 1010

4 biểu diễn ở bù 2 với mẩu 4 bit là 0100

Kết quả phép cộng ở dạng bù 2 là 1110 (là biểu diễn của -2 ở bù 2)

 

-6

   

1

0

1

0

   

+

4

+

0

1

0

0

 
     

1

1

1

0

-2 ở bù 2

ví dụ 2 :

-6 biểu diễn ở bù 2 với mẩu 5 bit là 11010

-4 biểu diễn ở bù 2 với mẩu 5 bit là 11100

Kết quả phép cộng ở dạng bùø 2 là 10110 và còn nhớ 1 khi cộng 2 bit cực trái nhưng ta bỏ nhớ này và kết quả là 10110 là biểu diễn của -10

 

-6

   

1

1

0

1

0

   

+

-4

+

1

1

1

0

0

 
     

1

0

1

1

0

-10 ở bù 2 bỏ đi nhớ

8. Lỗi tràn số

    Trong các ví dụ trên bạn đọc chắc cũng thắc mắc tại sao ở ví dụ 2 trong phép cộng số bù 2 ta lại dùng mẩu 5 bit chứ không là 4 bit? Ý nghĩa của lỗi tràn số đã giới thiệu ở các các phần trước, đó là hiện tượng xảy ra khi số cần biểu diễn vượt quá số bit cho trước để biểu diễn nó.

Ví dụ :

nếu ở ví dụ 2 ta dùng mẩu 4 bit cho biểu diễn bù 2 cho -6 và -4, khi đó bài toán được thực hiện như sau :

-6 biểu diễn ở bù 2 với mẩu 4 bit là 1010

-4 biểu diễn ở bù 2 với mẩu 4 bit là 1100

Kết quả phép cộng ở dạng bù 1 là 0110 là biểu diễn của +6, do đó kết quả bị sai.

    Nguyên nhân là do ta lấy số lượng bit để biểu diễn quá ít nên xảy ra lỗi tràn số. Do đó người sử dụng máy tính phải lường trước được tình huống này khi muốn lưu trữ dữ liệu, để khắc phục ta tăng số lượng bit nhiều hơn thì sẽ không gây hiện tượng tràn. Ví dụ với mẩu 32 bit thì giá trị dương lớn nhất là 2147483647.

Å Tổng quát ta có số ở phép biểu diễn bù 1 và bù 2 thì giá trị dương lớn nhất cho phép khi dùng mẩu n bit là : 2n-1 -1 và giá trị âm nhỏ nhất là -2n-1

9. Biểu diễn hỗn số bằng hệ nhị phân

    Ðể biểu diễn hỗn số bằng hệ nhị phân ta dùng dấu chấm cơ số (radix point) giống như cách biểu diễn số có phần thập phân trong hệ cơ số 10, khi đó số bên trái dấu chấm cơ số là biểu diễn nhị phân của phần nguyên của hỗn số và bên phải là biểu diễn nhị phân của phân số, vị trí bit bên phải đầu tiên sau dấu chấm là biểu diễn cho số kế tiếp là , , ... Với qui luật số sau sẽ nhỏ hơn 2 lần so với số trước. Các giá trị này gọi là trọng số của bit tương ứng với vị trí tính từ vị trí đầu tiên bên phải của dấu chấm cơ số. Ðể biến đổi hỗn số ở hệ nhị phân sang hỗn số ở hệ thập phân, ta vẫn sử dụng cách thực hiện như đổi số nguyên sang hệ thập phân cho các số nhị phân bên trái và bên phải dấu chấm nhưng với chú ý các số nhị phân bên phải dấu chấm sẽ có trọng số là phân số bắt đầu từ và giảm một nửa khi đi từ trái sang phải

Ví dụ :

Cho hỗn số 5 thì sẽ biến đổi thành 101.101 và được biểu diễn theo lưu đồ sau :

Figure_B1_001.jpg (35193 bytes)

    Phép cộng ở trên hỗn số biểu diễn dưới dạng nhị phân cũng được thực hiện như phép cộng nhị phân cho số nguyên, chỉ có chú ý là dấu chấm cơ số phải sắp thẳng hàng cho 2 số.

Ví dụ :

   

1

0

.

0

1

1

là biểu diễn của 2 3/8

+

1

0

0

.

1

1

 

là biểu diễn của 4 3/4

=

1

1

1

.

0

0

1

là biểu diễn của 7 1/8

10.Các phép toán luận lý

    Ba phép toán thông thường trong nhóm của các phép toán luận lý đó là AND, OR, và EXCLUSIVE ORø (XOR). Chúng tương tự như phép cộng và trừ với hai toán hạng và trả ra một kết quả duy nhất. (Trái lại có một số phép toán mà giá trị trả về của nó sẽ cho ra 2 số khác dấu nhau như là phép rút căn bậc hai, ví dụ như 4 khi rút căn sẽ cho hai kết quả là 2 và -2). Bây giờ chúng ta sẽ xem qua một số phép toán như sau :

    a. Phép toán AND

Hình 2-6 cho ta một bảng các kết quả của phép toán AND với một bit duy nhất. Chú ý rằng kết quả là 1 chỉ khi cả hai bit đều là 1.

 

1

   

1

   

0

   

0

AND

1

AND

0

AND

1

AND

0

Kết quả

1

Kết quả

0

Kết quả

0

Kết quả

0

Trái lại, với phép cộâng cho các toán hạng là các bit thì sẽ cho kết quả không giống như phép toán AND. Với hai dãy gồm nhiều bit là toán hạng cho phép toán AND, thì vẫn được áp dụng các qui tắc thực hiện phép toán AND như trong ví dụ dướ đây, khi đó thì ta sẽ tách riêng ra từng cặp bit thành các cột ở mỗi dãy và thực hiện qui tắc AND cho cặp bit đó.

Ví dụ thực hiện phép AND cho hai byte sau:

 

1 0 0 1 1 0 1 0

AND

1 0 0 1 1 0 1 0

Kết quả

1 0 0 0 1 0 0 0

Một trong những sử dụng chính của phép toán AND là thành phần 0 trong một dãy bit sẽ không bị ảnh hưởng bởi các phần khác. Hãy xem một ví dụ, điều gì sẽ xảy ra nếu dãy bit 00001111 là toán hạng đầu tiên của phép toán AND. Mặc dù ta không biết thành phần toán hạng hai, nhưng chúng ta vẫn suy ra được 4 bit bên trái nhất là các số 0.

Hơn thế nữa, bốn bit bên phải nhất là 4 bit cuối của toán hạng thứ hai, theo ví dụ ta có :

 

0 0 0 0 1 1 1 1

AND

0 0 0 0 1 0 1 0

Kết quả

0 0 0 0 1 0 1 0

Cách sử dụng phép toán AND trong ví dụ này được gọi là cách sử dụng mặt nạ (masking). Ở đây, toán hạng đầu được gọi là mặt nạ (mask), nó được sử dụng để xác định phần của toán hạng còn lại sẽ ảnh hưởng đến kết quả. Trong trường hợp này, mặt nạ được sử dụng sẽ cho ra kết quả là mỗi phần 4 bit của các toán hạng trong đó các số 0 với 4 bit đầu của toán hạng thứ nhất và 4 bit sau là phần của toán hạng thứ hai.

Phép toán này thường được sử dụng trong phép kiểm tra bit là 1 hay 0. Ví dụ, một chuỗi gồm 52 bit, với mỗi bit là một đại diện cho một lá bài, có thể được sử dụng để biễu diễn trạng thái các lá bài cho một người chơi bằng cách gán 1 cho 5 bit tương ứng với các lá bài và các bit còn lại là 0. Khi đó nếu muốn kiểm tra lá bài thứ 6 trong 52 lá bài này có thuộc về một người nào đó hay không, thì ta có thể sử dụng phép toán AND. Một ví dụ khác ta có 8 bit trong một ô nhớ của bộ nhớ chính, ta muốn kiểm tra bit thứ 3 trong nhóm bit cao có tồn tại hay không? Bằng cách sử dụng mặt nạ 00100000 và thực hiện phép toán AND giữa dãy bit và mặt nạ. Nếu byte nhận được có giá trị là 0 thì bit thứ 3 trong phần cao không tồn tại và ngược lại là tồn tại. Do đó phép toán AND thường được sử dụng trong chương trình cùng với lệnh nhảy có điều kiện. Ngoài ra ta có bit thứ 3 này là 1, nhưng ta muốn thay đổi nó thành 0 mà không ảnh hưởng đến các bit khác, ta có thể AND với mặt nạ 11011111 và sau đó đưa kết quả trở lại dãy bit gốc.

b. Phép toán OR

 

 

1

   

1

   

0

   

0

OR

1

OR

0

OR

1

OR

0

Kết quả

1

Kết quả

1

Kết quả

1

Kết quả

0

Bây giờ chúng ta cùng tìm hiểu phép toán OR. Các qui tắc như hình 2-7. Chú ý rằng kết quả là 0 chỉ khi cả 2 bit toán hạng đều là 0. Một lần nữa các qui tắc cơ bản có thể được mở rộng đến các chuỗi các bit bằng cách dựa trên việc thực hiện phép toán cho các cột độc lập, như đã trình bày sau đây:

 

1 0 0 1 1 0 1 0

OR

1 1 0 0 1 0 0 1

 

1 1 0 1 0 0 1 1

Ở đây phép toán AND có thể được sử dụng để chép lại một phần của dãy bit và thêm vào 0 ở phần không chép lại. Còn đối với phép toán OR thì có thể sử dụng để chép lại một phần của dãy bit, và đặt giá trị 1 vào các phần không chép lại. Trong phần này chúng ta một lần nữa sử dụng mặt nạ, nhưng thời điểm này chúng ta xác định các vị trí bit được chép lại 0 và sử dụng 1 để chỉ các vị trí không được chép lại. Ví dụ, thực hiện phép toán OR với một byte có giá trị là 11110000 sau cho ta có được một kết quả với các số 1 ở 4 bit cao và ở 4 bit còn lại là 4 bit thấp của toán hạng kia.

Bài toán được trình bày như sau:

 

1 1 1 1 0 0 0 0

OR

1 0 1 0 1 0 1 0

 

1 1 1 1 1 0 1 0

 

Từ đó ta thấy rằng phép toán AND và mặt nạ 11011111 có thể được sử dụng để buộc thành 0 ở bit thứ 3 của phần cao trong một dãy 8 bit, còn phép toán OR và mặt nạ 00100000 có thể buộc thành 1 ở vị trí đó.

c. Phép toán EXCLUSIVE OR (XOR)

Các qui tắc căn bản của phép toán XOR được trình bày trong hình 2-8. Trong trường hợp để kết quả là 1, thì hai bit toán tử chỉ có chính xác một bit là 1. Nghĩa là nếu một bit là 1 thì bit kia không được là 1, mới cho ra kết quả là 1. Ta có thể áp dụng các qui tắc này cho một dãy bit theo ví dụ như sau:

 

1 0 0 1 1 0 1 0

XOR

1 1 0 0 1 0 0 1

 

0 1 0 1 0 0 1 1

 

 

1

   

1

   

0

   

0

XOR

1

XOR

0

XOR

1

XOR

0

Kết quả

1

Kết quả

0

Kết quả

0

Kết quả

0

Sử dụng chính của phép toán này là lấy phần bù của một chuỗi bit.Ví dụ, để lấy phần bù của toán hạng thứ 2 ta thực hiện như sau:

 

1 1 1 1 1 1 1 1

XOR

1 0 1 0 1 0 1 0

 

0 1 0 1 0 1 0 1

    d. Các phép toán dịch chuyển và quay

Các phép toán thuộc lớp các phép toán như phép quay (rotation) và phép dịch chuyển (shift), đều có ý nghĩa biến đổi các bit trong một thanh ghi và thường được sử dụng để giải quyết các bài toán thực hiện trên bit. Ví dụ như biến đổi một byte theo một yêu cầu nào đó bằng cách sử dụng mặt nạ, hoặc thao tác trên phần định trị của các số biểu diễn ở dạng dấu chấm động. Những phép toán này được phân chia tùy theo hướng di chuyển của các dãy bit (sang trái hay sang phải).

Cho một byte gồm 8 bit, nếu ta thực hiện phép toán SHIFT cho dãy bit của nó sang hướng trái hay phải thì bit đầu tiên của byte (là bit cao nhất nếu dịch chuyển sang phải, hay bit thấp nhất khi dịch chuyển sang trái) sẽ bị chuyển đi, và bit cuối cùng của nó (là bit cao nhất nếu dịch chuyển sang trái, hay bit thấp nhất khi dịch chuyển sang phải) sẽ được đặt là 0.

Ví dụ cho một byte có giá trị là 10001110, khi SHIFT trái một lần sẽ là 00011100 hoặc SHIFT phải kết quả là 01000111.

Ðối với phép toán quay, cũng giống như phép SHIFT. Nhưng bit cuối sẽ được chuyển vào bit đầu tiên.

Ví dụ cho một byte có giá trị là 10001110, khi ta quay trái một bit thì kết quả sẽ là 00011101;  quay phải một bit thì kết quả sẽ là 01000111.

Phép toán SHIFT thường được sử dụng cho các phép nhân hay chia cho 2, đối với SHIFT trái chính là nhân cho 2, và SHIFT phải là chia cho 2. Do đó phép toán này này ta gọi là phép chuyển số học (arithmetic Shifts).