Chương 3: Các phép toán số nhị phân trong bộ vi xử lý

Chuong 3 Cac Phep Toan So Nhi Phan Trong Bo Vi Xu Ly



Chương 3: Các phép toán số nhị phân trong bộ vi xử lý

3.1 Giới thiệu

Trong máy tính, các phép tính số học được thực hiện theo 8 bit, 16 bit, 32 bit hoặc 64 bit. Một số như 3 trong hệ nhị phân là 11. Nếu phép toán được thực hiện ở 8 bit thì số này được coi là 00000011; trước nó bằng 0 số 0.







Đối với số nhị phân như 10000101, bit quan trọng nhất là bit ở ngoài cùng bên trái. Đó là 1 trong trường hợp này. Bit có ý nghĩa nhỏ nhất là bit ngoài cùng bên phải, vẫn là 1, đối với số. Bit quan trọng nhất được viết tắt là MSB. Bit ít quan trọng nhất được viết tắt là LSB.



Chữ số BInaryT được viết tắt là BIT và được viết đơn giản là bit. Trong số 10010011, mỗi một hoặc số 0 là một bit. Một nhóm bốn bit được gọi là nibble. Một nhóm tám bit được gọi là một byte. Một byte bao gồm hai phần nhỏ. Nibble thấp hơn là nibble dành cho LSB và nibble cao hơn là nibble dành cho MSB.



Một nhóm 8 bit, 16 bit, 32 bit hoặc 64 bit được gọi là một từ, miễn là nhóm đó truyền tải thông tin ngoài việc chỉ ra một con số. Nhóm được gọi là một từ, ví dụ, nếu đó là một lệnh cấp thấp trong máy tính. Ngoài ra còn có từ 24 bit, nhưng ngày nay nó không được sử dụng phổ biến.





Độ bền đề cập đến thứ tự các byte tạo thành một từ. Hãy xem xét từ 24 bit - 100100001111010100100010. Từ này bao gồm ba byte:

10010000 11110101 00100010



Byte quan trọng nhất là byte bên trái nhất. Khi byte ở ngoài cùng bên trái là byte có ý nghĩa nhất và byte ở ngoài cùng bên phải là byte có ý nghĩa nhỏ nhất, thì điều này được gọi là biểu diễn Big Endian của từ. Biểu diễn Little Endian thì ngược lại.

Bộ nhớ máy tính là một chuỗi các ô và mỗi ô chứa một byte. Ô đầu tiên trong bộ nhớ của máy tính dành cho byte 0, ô thứ hai dành cho byte 1, ô thứ ba dành cho byte 2, v.v. Với độ bền lớn và đối với từ trước đó, byte quan trọng nhất được lưu trữ trong ô byte 0, byte giữa được lưu trữ trong ô byte 1 và byte ít quan trọng nhất được lưu trữ trong ô byte 2. Điều này có nghĩa là có nhiều byte quan trọng hơn ở ô nhớ thấp hơn.

Từ 24 bit trước đó có thể được viết theo thứ tự ngược lại của byte như sau:

00100010 11110101 10010000

Bây giờ, byte có trọng số thấp nhất nằm ở ngoài cùng bên trái và byte có trọng số cao nhất nằm ở ngoài cùng bên phải. Khi byte ở ngoài cùng bên trái là byte có ý nghĩa nhỏ nhất và byte ở ngoài cùng bên phải là byte có ý nghĩa nhất, thì đó là cách biểu thị Little Endian của từ. Với độ bền nhỏ và đối với từ trước đó, byte có ý nghĩa nhỏ nhất được lưu trữ trong ô byte 0, byte giữa được lưu trữ trong ô byte 1 và byte có ý nghĩa nhất được lưu trữ trong ô byte 2. Điều này có nghĩa là có ít byte quan trọng hơn trong ô nhớ thấp hơn.

Độ cuối không được sử dụng cho các bit trong một byte. Nó cũng không được sử dụng để ghi lại một byte. Nó chỉ được sử dụng cho thứ tự byte.

Dòng số
Số không có dấu là số dương. Số dương là số từ 0 đi lên. Số âm cũng tồn tại. Số dương và số âm có thể được biểu diễn trên trục số. Dòng số sau đây hiển thị các số nguyên dương và âm (số nguyên) gần bằng 0:

Số âm giảm dần từ 0 trở xuống (sang trái). Trong nhiều trường hợp, số 0 được coi là dương. Tuy nhiên, nó được coi là tiêu cực trong một số trường hợp. Đó là lý do tại sao có dấu cộng và dấu trừ ở phía trước số 0, ở cách đánh số thấp hơn, trong sơ đồ. Khi một số dương, dấu của nó có thể bị bỏ qua; đây là trường hợp đánh số trên trong sơ đồ. Dấu trừ đứng trước số âm không bao giờ được bỏ qua.

3.2 Bổ sung số nhị phân

Ngoài ra:

A + B = S

A được gọi là phần bổ sung, B được gọi là phần bổ sung và S được gọi là tổng.

Xét phép cộng hai số dương sau đây vào cơ số hai:

Trong cơ số hai, các chữ số duy nhất có thể có là 0 và 1. Phép cộng trong cơ số 2 tương tự như phép cộng trong cơ số mười, nhưng hai trong cơ số hai là một-không (10). Khi tổng của hai bit trong một cột là 10, 0 được ghi và 1 được chuyển sang cột bên trái ngay lập tức; được cộng vào tổng của hai bit ở đó. Khi tổng số là ba, nó có nghĩa là 11 trong cơ số hai. Số 1 bên phải trong 11 được ghi và số 1 bên trái được mang để cộng vào tổng các bit ngay lập tức của cột bên trái. Trong cả hai trường hợp, số 1 được chuyển sang trái được gọi là số mang.

Đọc bảng cộng trước từ bên phải, ở cột thứ hai (từ bên phải), có một số mang kết quả từ 1+1 = 10. Ở cột thứ ba, có một số mang kết quả từ 1+1+ của 1 = 11. Trong cột thứ tư, có một số mang kết quả từ 0+1+ số mang của 1 = 10. Trong cột thứ năm, không có số mang vì tổng là 0+0+ số mang của 1 = 1. phần còn lại của các cột không liên quan đến việc mang theo.

Việc đếm cột bắt đầu từ đầu bên phải. Với phép cộng 16 bit, có thể có sự chuyển từ cột thứ tám sang cột thứ chín (di chuyển sang trái). Bảng sau đây minh họa điều này:

Các phép toán số học và logic diễn ra trong bộ vi xử lý trên bo mạch chủ của máy tính.

Đối với máy tính word 8 bit, phần cứng không thể tự động chuyển từ bit thứ tám sang bit thứ chín. Vì vậy, để cộng hai nhóm 16 bit trong một máy tính như vậy, việc cộng phải được thực hiện hai lần theo cặp 8-8 bit. Việc vận chuyển được di chuyển và thực hiện bởi phần mềm (lập trình).

Để cộng hai số, trước tiên các số này có thể được chuyển đổi sang dạng phần bù hai của chúng (xem bên dưới) trước khi cộng.

3.3 Phần bù 2 và phép trừ số nhị phân

Trên bo mạch chủ của máy tính có bộ nhớ, bộ vi xử lý và các mạch điện khác. Bộ nhớ là một chuỗi các ô 8 bit. Đối với một byte, mỗi bit đi vào một ô. Bộ vi xử lý có một vài vị trí loại bộ nhớ. Những vị trí loại bộ nhớ này được gọi là các thanh ghi. Vì vậy, trong máy tính, các nhóm byte có thể được lưu trữ tạm thời trong bộ nhớ hoặc trong các thanh ghi của bộ vi xử lý.

Trong bất kỳ kho lưu trữ nào, mỗi ô có thể lấy số 1 hoặc 0 và không có gì khác. Trong cuộc sống có số dương và số âm. Số dương bắt đầu bằng dấu cộng (+) và số âm bắt đầu bằng dấu âm (-). Khi bỏ qua dấu thì số đó được coi là số dương.

Để giải quyết vấn đề chỉ ra dấu của một số trong máy tính, toàn bộ số được lưu trữ trong các phạm vi. Số nguyên là số nguyên. Nếu tám bit được sử dụng để lưu trữ dãy số có thể thì bit ngoài cùng bên trái sẽ được sử dụng làm bit dấu. Nếu số bắt đầu bằng 0 thì số đó là số dương. Nếu bắt đầu bằng 1 thì số đó là số âm. Nếu 16 bit được sử dụng để lưu trữ dãy số có thể thì bit ngoài cùng bên trái sẽ được sử dụng làm bit dấu. Nếu số bắt đầu bằng 0 thì t là số dương. Nếu bắt đầu bằng 1 thì số đó là số âm. Các số ở dạng này được gọi là số có dấu.

Trong thực tế, có thể có các số có dấu cho 8 bit, 16 bit, 32 bit và 64 bit. Số lượng bit được sử dụng càng rộng thì phạm vi số có thể được lưu trữ càng lớn.

Số nguyên bù hai
Với phần bù hai, các số dương là các số đếm bình thường, ngoại trừ chữ số ngoài cùng bên trái là 0. Để thu được số âm tương ứng với bất kỳ số dương nào, hãy đảo ngược từng bit trong số đó và thêm 1 vào kết quả. Đảo ngược hoặc phần bù của 0 là 1. Đảo ngược hoặc phần bù của 1 là 0. Các bảng sau đây hiển thị một số số bù hai trong phạm vi của chúng:

Bảng 3.31
Số nguyên bù hai trong hai bit
nhị phân Số thập phân
01 +1
00 +0
mười một -1
10 -2

Các số nhị phân dương là 00 và 01 (tức là 0 và một). Ở bit ngoài cùng bên trái, số 0 cho thấy chúng là số dương. 00 nằm ở giữa phạm vi. Để có được -1, nghịch đảo của số 01 là 10. Cộng 1 vào số này (ở ngoài cùng bên phải) sẽ được 11.

Vì hai bit được sử dụng nên chỉ còn lại một bit để biểu thị các số trong phạm vi bao gồm các số +1, +0 và -1 tương ứng với 01, 00 và 11. Bit đầu tiên biểu thị dấu. Điều xảy ra là 10 cho +2 không nằm trong ba số nhị phân này. 10 bắt đầu bằng 1 có nghĩa là số đó phải là số âm trong phần bù hai. Vì vậy, 10 được bao gồm trong phạm vi, có nghĩa là -2.

Với hai bit trong phần bù hai, số lượng tất cả các số nguyên (dương và âm) có thể được biểu diễn là 2 2 = 4 chứ không phải 2 2 -1 = 3. Sắc thái bắt nguồn từ việc bao gồm số âm cuối cùng là số âm của 2 số với – 1. Trong trường hợp này là -2 2-1 = -2 1 = -2. Không có +2 trong phạm vi số bù hai trong 2 bit.

Bảng 3.32
Số nguyên bù hai trong bốn bit
nhị phân Số thập phân
0111 +7
0110 +6
0101 +5
0100 +4
0011 +3
0010 +2
0001 +1
0000 +0
1111 -1
1110 1110
1101 -3
1101 -3
1100 -4
1011 -5
1010 -6
1001 1001
1000 -số 8

Các số nhị phân dương là từ 0000 đến 0111 (tức là từ 0 đến 7). Ở bit ngoài cùng bên trái, số 0 cho thấy chúng là số dương. 0000 nằm ở giữa phạm vi. Để có -1, nghịch đảo của số 0001 được tìm là 1110. Thêm 1 vào số này (ở ngoài cùng bên phải) sẽ được 1111. Để có được -2, nghịch đảo của 0010 được tìm thấy là 1101. Thêm 1 vào đây ( từ ngoài cùng bên phải) cho kết quả 1110. Các số nhị phân âm khác như -3 đến -7 cũng được xác định tương tự.

Vì bốn bit được sử dụng nên ba bit còn lại để biểu thị các số trong phạm vi +7, +6, +5, +4, +3, +2, +1, +0, -1, -2, - 3, -4, -5, -6 và -7 tương ứng với 0111, 0110, 0101, 0100, 0011, 0010, 0001, 0000, 1111, 1110, 1101, 1100, 1011, 1010 và 1001.

-8 tương ứng với 1000 phải được xử lý riêng. Bit đầu tiên cho tất cả các số này biểu thị dấu 0 cho số dương và 1 cho số âm. Điều xảy ra là 1000 không nằm trong số mười bốn số nhị phân này. 1000 bắt đầu bằng 1, nghĩa là nó phải là số âm, trong trường hợp có liên quan đến phần bù của hai. Vì vậy, 1000 được bao gồm trong phạm vi, có nghĩa là -8.

Với bốn bit trong phần bù hai, số lượng tất cả các số nguyên (dương và âm) có thể được biểu diễn là 2 4 = 16 chứ không phải 2 4 – 1 = 15. Sắc thái bắt nguồn từ việc bao gồm số âm cuối cùng là số âm của 2 sốChiều rộng – 1. Trong trường hợp này là -2 4 -1 = -2 3 = -8. Không có +8 trong dãy số.

Phân tích trước đó cho hai, bốn và các bit rộng hơn trong phần bù hai có thể được áp dụng cho các số nhị phân rộng 8 bit, 16 bit, 32 bit và 64 bit.

Phần bù hai hy sinh bit đầu tiên (ngoài cùng bên trái) cho dấu 0 cho số dương và 1 cho số âm. Đối với nhóm bit có độ rộng bit “n”, có 2 N tổng số dương cộng với số âm. Nó sẽ là 2 N -1, nếu không có số âm cuối cùng (nhỏ nhất) may mắn được bao gồm. Số dương cao nhất là +2 n-1 -1 và số âm nhỏ nhất là -2 n-1 -1. Nó sẽ là -2 n-1 -1, phải chăng không phải là may mắn -2 n-1 bao gồm.

Trừ các số trong phần bù hai
Trong phép trừ:

A – B = D

A được gọi là số bị trừ, B được gọi là số bị trừ và D được gọi là hiệu.

Để trừ một số nhị phân dương khỏi một số nhị phân dương khác, số trừ được viết dưới dạng số bù hai và số trừ được chuyển thành giá trị số bù hai âm của nó. Vì vậy, tuyên bố toán học trở thành:

A+ – B = D

Nói cách khác, trong phép trừ bù hai, số trừ được chuyển thành số âm và sau đó được cộng vào số trừ.

Ví dụ 3.31:
Đánh giá biểu thức thập phân sau đây trong phần bù hai bằng cách sử dụng bốn bit:

6 – 4

Giải pháp:
Số nhị phân của 6 là 110. Trong số bù hai 4 bit, nó là 0110. Số nhị phân của +4 là 100. Trong số bù hai 4 bit, nó là 0100. 0100 phải được chuyển đổi thành âm 4 trong số hai Phần bù như sau: Phần bù hoặc nghịch đảo của 0100 là 1011. Thêm 1 vào từ đầu bên phải, như chúng ta đã làm ngoài ra, sẽ được 1100. Vì vậy, biểu thức thập phân là:

6 – 4 trở thành:

0110 – 0100 tức là

0110 +(- 0100) = 0110 + 1100 thực hiện như ở phần cộng trước như sau:

Lưu ý: 0110 +(- 0100) giống 6 + – 4

Với phép trừ phần bù hai, bất kỳ dấu cộng nào sau cột cuối cùng về bên trái sẽ bị loại bỏ. Khi trừ ở dạng thập phân, phát biểu toán học là:

6 – 4 = 2

Thực hiện tương tự với phần bù hai, câu trả lời là 0010, tức là +2 trong phép đếm nhị phân phần bù hai. Phép trừ trước trừ một số nhỏ hơn từ một số lớn hơn. Trong ví dụ sau, số lớn hơn được trừ từ số nhỏ hơn. Có thể tham khảo bảng 3.32 để xem liệu 0010 có thực sự là số bù hai tương đương với +2 hay không.

Ví dụ 3.32:
Đánh giá biểu thức thập phân sau đây trong phần bù hai với bốn bit:

4 – 6

Giải pháp:
Số nhị phân của 4 là 100. Trong phần bù hai 4 bit, nó là 0100. Số nhị phân của +6 là 110. Trong phần bù hai 4 bit, nó là 0110. 0110 phải được chuyển đổi thành âm 6 trong phần bù hai như sau: Phần bù hoặc nghịch đảo của 0110 là 1001. Thêm 1 vào từ đầu bên phải, như chúng ta đã làm trong phép cộng trước, sẽ ra 1010. Vì vậy, biểu thức thập phân là:

4 – 6 trở thành:

0100 – 0110 tức là

0100 +(- 0110) = 0100 + 1010 thực hiện như ở phần cộng trước như sau:

Lưu ý: 4+ – 6 giống 0100 +(– 0110).

Với phép trừ phần bù hai, bất kỳ dấu cộng nào sau cột cuối cùng về bên trái sẽ bị loại bỏ. Khi trừ ở dạng thập phân, phát biểu toán học là:

4 – 6 = -2

Thực hiện tương tự với số bù hai, câu trả lời là 1110 tức là -2 trong phép đếm nhị phân bù hai. Có thể tham khảo bảng 3.32 để xem liệu 1110 có thực sự là số bù 2 tương đương với -2 hay không.

3.4 Phép nhân số nhị phân

Trong tuyên bố:

A x B = P

A được gọi là số nhân, B được gọi là số nhân và P được gọi là tích. Biểu thức A x B có nghĩa là cộng A, B số lần khi A và B là số nguyên (số nguyên).

Phép nhân trong hệ nhị phân cũng giống như phép nhân trong hệ thập phân. Tuy nhiên, thay vì thực hiện ở dạng thập phân, nó được thực hiện ở dạng nhị phân. Phép nhân biểu thức thập phân của 42 x 10 được thực hiện ở dạng nhị phân như sau trong đó 42 10 = 101010 2 và 10 10 = 1010 2 :

4 số được cộng vào được gọi là tích một phần. Câu trả lời chính là sản phẩm. Việc cộng các tích từng phần được thực hiện theo cách tương tự như đã giải thích ở trên.

Phép nhân cũng có thể được hiểu như sau: Trong phép nhân cơ sở hai này, nếu bit (chữ số) trong số nhân là 1 thì bit có trọng số nhỏ nhất của tích riêng của nó là bit có trọng số nhỏ nhất của số bị nhân được gõ lại ngay bên dưới nó; và các bit còn lại của số bị nhân được lặp lại sang trái. Trong phép nhân cơ số hai này, nếu bit (chữ số) trong số nhân là 0 thì tích từng phần của nó bao gồm các số 0 với bit có ý nghĩa nhỏ nhất là 0 ngay bên dưới nó. Số lượng tất cả các số 0 là số bit trong số bị nhân.

3.5 Phép chia số nhị phân

Trong tuyên bố:

A -> B = Q

A được gọi là Cổ tức, B được gọi là Số chia và P được gọi là Thương số. Thương số có thể đi kèm với số dư. Biểu thức A `B có nghĩa là có thể thêm B bao nhiêu lần để được A hoặc gần với nó sao cho số dư bằng 0 hoặc nhỏ hơn B.

Việc chia có thể được thực hiện bằng nhiều cách. Bộ phận được hiển thị ở đây là bộ phận phục hồi.

Khôi phục bộ phận
Đây là phương pháp chia dài được học ở trường. Nếu 237 chia cho 6 thì được 39 dư 3. 237 10 ở cơ sở 2 là 11101101 2 và 6 10 ở cơ số 2 là 110 2 . 39 10 ở cơ số 2 là 100111 2 và 3 10 ở cơ số 2 là 11 2 .

Vì vậy, 11101101 2 chia cho 110 2 cho 100111 2 còn lại 11 2 ở cơ sở hai. Với phương pháp khôi phục, các số nhị phân là số thường và chúng không nhất thiết phải là số bù hai. Cấu trúc sau chia 11101101 2 đến 110 2 cho 100111 2 còn lại 11 2 :

Phép trừ được thực hiện thông thường và không sử dụng phần bù hai. Vì đây là cơ số hai nên số vay là hai chứ không phải mười. Cổ tức một phần là 10, 101, 1011, 1010 và 1001. Phần còn lại là 11. Vì số chia có ba chữ số nên về cơ bản phép chia được thực hiện theo nhóm có ba chữ số từ số bị chia đã cho. Thương số là số nguyên (số nguyên) và là 100111 cho bài toán này. Kết quả thương và số dư đúng như mong đợi.

3.6 Các phép tính số học với phần mềm và phần cứng

Bo mạch chủ máy tính có một chiếc đồng hồ. Tiếng tích tắc của đồng hồ được gọi là xung. Ở mỗi xung đồng hồ, một hoặc nhiều quyết định được đưa ra ở những vị trí khác nhau trên bo mạch chủ; và đó là việc liên quan đến lập trình (phần mềm).

Bên trong bộ vi xử lý có hai loại mạch gọi là: Mạch logic tổ hợp và Mạch logic tuần tự. Có một loại mạch khác gọi là bộ ghép kênh. Phép cộng, nhân và chia có thể diễn ra trong một khoảng thời gian bằng cách sử dụng logic tổ hợp (mạch). Trong khi lập trình (phần mềm) đưa ra quyết định ở mỗi xung đồng hồ bằng cách sử dụng các mạch logic tuần tự và bộ ghép kênh.

Khi phép trừ được thực hiện bằng cách sử dụng phần bù hai, cần có ít nhất hai xung đồng hồ. Ở xung đồng hồ đầu tiên, bộ ghép kênh chuyển kênh phụ tới một tập hợp các cổng NOT (một cổng NOT cho mỗi chữ số). Ở xung đồng hồ thứ hai, logic tổ hợp thêm 1 vào đầu ra của cổng NOT và tiếp tục thêm kết quả là số trừ và số trừ. Tất cả sự bổ sung đó có thể diễn ra trong khoảng thời gian một đồng hồ.

Phép cộng, nhân và chia vẫn có thể gặp trục trặc khi lập trình bằng bảng chân lý. Tuy nhiên, nó không được đề cập trong khóa học nghề nghiệp trực tuyến này.

3.7 Hoạt động logic trong bộ vi xử lý

VÀ, HOẶC, XOR và Đảo ngược


Bảng sau minh họa Bitwise AND. Điều này có nghĩa là đối với hai số nhị phân khác nhau, các bit tương ứng được AND dựa trên bảng AND Truth:

Di chuyển từ trái sang phải, 1 VÀ 1 = 1; 0 VÀ 1 = 0; 0 VÀ 0 = 0; 1 VÀ 0 = 0; v.v. theo Bảng Sự thật VÀ.

HOẶC
Bảng sau minh họa Bitwise OR. Điều này có nghĩa là đối với hai số nhị phân khác nhau, các bit tương ứng được ORd dựa trên bảng OR Truth:

Di chuyển từ trái sang phải, 1 HOẶC 1 = 1; 0 HOẶC 1 = 1; 0 HOẶC 0 = 0; 1 HOẶC 0 = 1; v.v. theo Bảng chân lý OR.

MIỄN PHÍ
Bảng sau minh họa OR độc quyền của Bitwise. Điều này có nghĩa là đối với hai số nhị phân khác nhau, các bit tương ứng được XOR dựa trên bảng XOR Truth:

Di chuyển từ trái sang phải, 1 XOR 1 = 0; 0 XOR 1 = 1; 0 XOR 0 = 0; 1 XOR 0 = 1; v.v. theo Bảng chân lý XOR.

Đảo ngược (KHÔNG)
Bảng sau minh họa Bitwise NOT (đảo ngược). Điều này có nghĩa là đối với một số nhị phân, lần này, mỗi bit được đảo ngược dựa trên Bảng KHÔNG chân lý:

Di chuyển từ trái sang phải, KHÔNG 1 = 0; KHÔNG 0 = 1; KHÔNG 0 = 1; KHÔNG 1 = 0; v.v. theo Bảng KHÔNG chân lý.

Dịch chuyển sang phải hoặc sang trái

Dịch chuyển sang phải
Số nhị phân sau đây được dịch chuyển 3 vị trí bit sang phải, với các số 0 được chèn vào các vị trí bit trống ở bên trái:

Việc dịch chuyển có thể được thực hiện ở một, hai, ba, bốn, v.v.

Sang trái
Số nhị phân sau đây được dịch chuyển 3 vị trí bit sang trái, với các số 0 được chèn vào các vị trí bit trống ở bên phải:

Việc dịch chuyển có thể được thực hiện ở một, hai, ba, bốn, v.v.

Xoay phải hoặc trái

Xoay cũng tương tự như dịch chuyển. Nó được thực hiện từng chút một. Khi quay sang phải, các bit rời đầu bên phải không bị rơi ra như khi dịch chuyển; họ thay thế từng bit còn trống ở bên trái. Khi quay sang trái, các bit rời khỏi đầu bên trái không bị rơi ra như khi dịch chuyển; họ thay thế từng bit còn trống ở bên phải.

Xoay phải
Số nhị phân sau được xoay 3 bit sang phải:

Việc xoay có thể được thực hiện ở một, hai, ba, bốn, v.v.

Xoay trái
Số nhị phân sau được xoay 3 bit sang trái:

Việc xoay có thể được thực hiện ở một, hai, ba, bốn, v.v.

3.8 Bộ ký tự ASCII và các giá trị mã của nó

ASCII là viết tắt của “Mã tiêu chuẩn Hoa Kỳ (U.S.A) để trao đổi thông tin”. Hãy tưởng tượng một bàn phím có 96 phím. Đây là một bàn phím lý tưởng trong đó các phím chữ hoa khác với các phím chữ thường. Mọi phím khác đại diện cho một ký tự được tìm thấy trên bàn phím tiếng Anh (Hoa Kỳ). Các ký tự và mã số (số tương ứng với các ký tự) được liệt kê như sau:

Trong bảng này, 32 ký tự đầu tiên (kể cả ký tự có số 00 16 = 0 10 code) là các ký tự không in được. Họ là những nhân vật điều khiển. Chúng không được nhìn thấy trên màn hình (màn hình) nơi mọi thứ đều bình đẳng. Chúng chỉ có tác dụng. Hãy thảo luận thêm về điều đó sau.

Các ký tự còn lại là ký tự in; họ được nhìn thấy trên màn hình. Có 128 ký tự ASCII. 2 7 = 128. 1,111,111 2 = 127 10 . 7 trong 2 7 có nghĩa là 7 bit.

Bây giờ, 1111111 2 + 1 2 cũng giống như:

Đây 10.000.000 2 = 128 10 . Có 128 10 các ký tự trong danh sách (bảng) trước đó của các ký tự ASCII. Điều này bao gồm ký tự null, có mã trong cơ sở mười sáu (thập lục phân) là 00, tương đương với 0 trong cơ sở mười.

Vì có tổng cộng 128 ký tự nên 128 trừ 32 ký tự không in được sẽ có 96 ký tự in. Trong phần này, giả định rằng có một bàn phím lý tưởng với 96 ký tự là các ký tự có thể in được. Trên bàn phím lý tưởng này, các phím dành cho ký tự tiếng Anh viết hoa khác với các phím dành cho ký tự tiếng Anh viết thường.

Mỗi ký tự trên bàn phím được biểu thị bằng một số cơ số 7 bit không được hiển thị trong danh sách. Ví dụ: chữ in hoa của “N” được biểu thị bằng bảy bit 1001110 trong cơ số 2. Để chuyển đổi 1001110 2 đến cơ số 16, đặt trước nó bằng 0 và nhóm kết quả thành các nhóm con 4 bit như sau:

| 0100 | 1110 | 2 = | 4 | E | 16

Đó là 01001110 2 = 4E 16 . Để chuyển đổi 4E 16 đến cơ số mười, hãy làm như sau:

4 x (16) 1 + Ex (16) 0 = 4 x 16 + E x 1 = 4 x 16 + 14 x 1 = 64 + 14 = 78 10

Bên phải chữ “N” trong danh sách (bảng) là số thập lục phân 4E và số thập phân là 78.

Một ví dụ khác, ký tự “[“ được biểu thị bằng bảy bit 1011011 trong cơ số 2. Để chuyển đổi 1011011 2 đến cơ số 16, đặt trước nó bằng 0 và nhóm kết quả thành các nhóm con 4 bit như sau:

| 0101 | 1011 | 2 = | 5 | B | 16

Đó là 01011011 2 = 5B 16 . Để chuyển đổi 5B16 sang cơ số mười, hãy làm như sau:

5 x (16) 1 + B x (16) 0 = 5 x 16 + B x 1 = 5 x 16 + 11 x 1 = 80 + 11 = 91 10

Bên phải “[“ trong danh sách (bảng) là số thập lục phân 5B và số thập phân là 91.

Một ví dụ khác, ký tự cho số thập phân “5” được biểu thị bằng bảy bit 0110101 trong cơ số 2 và không 0000101 trong cơ sở 2. Để chuyển đổi 0110101 2 đến cơ số 16, đặt trước nó bằng 0 và nhóm kết quả thành các nhóm con 4 bit như sau:

| 0011 | 0101 | 2 = | 5 | B | 16

Đó là 00110101 2 = 35 16 . Để chuyển 3516 sang cơ số 10, hãy làm như sau:

3 x (16) 1 + 5 x (16) 0 = 3 x 16 + 5 x 1 = 3 x 16 + 5 x 1 = 48 + 5 = 53 10

Bên phải số “5” trong danh sách (bảng) là số thập lục phân là 35 và số thập phân là 53.

Vì máy tính hoạt động theo byte nên khi nhấn một phím trên bàn phím lý tưởng, tám bit sẽ được gửi đến bộ vi xử lý (bo mạch chủ). Bàn phím lý tưởng là một thiết bị ngoại vi được tách biệt khỏi bộ phận hệ thống (cơ sở) của máy tính. Nó có một mạch điện tử (IC) tạo ra bảy bit và đứng trước nó bằng số 0 trước khi gửi nó qua cáp đến bo mạch chủ của đơn vị hệ thống. Từ cổng đầu vào (mạch đầu vào) của bo mạch chủ, nó đi đến bộ vi xử lý cũng nằm trên bo mạch chủ. Từ bộ vi xử lý, nó đi tới bộ nhớ cũng được lắp trên bo mạch chủ.

Vì vậy, khi nhấn phím “N” trên bàn phím lý tưởng, tám bit 01001110 sẽ được đưa đến bộ vi xử lý. Từ bộ vi xử lý, chúng được đưa đến bộ nhớ nơi chúng vẫn ở vị trí bộ nhớ dưới dạng byte. Lập trình viên máy tính nên nhớ rằng 8 bit của 01001110 2 giống như 4E 16 tương đương với 78 10 .

Khi nhấn phím “[“trên bàn phím lý tưởng, tám bit 01011011 sẽ được đưa đến bộ vi xử lý. Từ bộ vi xử lý, chúng được đưa đến bộ nhớ nơi chúng vẫn ở vị trí bộ nhớ dưới dạng byte. Lập trình viên máy tính nên nhớ rằng 8 bit của 01011011 2 giống như 5B 16 tương đương với 91 10 .

Khi nhấn phím “5” trên bàn phím lý tưởng, dưới dạng ký tự chứ không phải số thập phân, tám bit 00110101 sẽ được đưa đến bộ vi xử lý. Từ bộ vi xử lý, chúng được đưa đến bộ nhớ nơi chúng vẫn ở vị trí bộ nhớ dưới dạng byte. Lập trình viên máy tính nên nhớ rằng 8 bit của 00110101 2 giống như 35 16 giống như 5310 10 .

Có những lúc một chương trình đang chạy và đợi số thập phân 5 được nhập vào máy tính. Trong tình huống này, nếu nhấn phím “5” trên bàn phím lý tưởng, mã 8 bit 00110101 vẫn được đưa đến bộ vi xử lý. Vì thứ cần thiết là số thập phân của 5 chứ không phải ký tự “5”, một đoạn mã (chương trình ngắn) từ bộ nhớ sử dụng bộ vi xử lý để chuyển đổi mã ký tự 00110101 trong cơ sở hai thành số bù hai 00000101 2 trước khi gửi nó đến một vị trí bộ nhớ dưới dạng byte bù hai. Lập trình viên máy tính phải nhớ rằng 00000101 có nghĩa là 5 10 ở cơ sở 2 và khác với mã số 00110101 2 , 35 16 và 53 10 có nghĩa là ký tự của “5”. Để hiển thị số bù 00000101 của hai trong bộ nhớ, một chương trình ngắn khác phải chuyển đổi 00000101 từ bộ nhớ thành 00110101. Đó là 00110101 giống như 35 16 tương đương với 53 10 được hiển thị trên màn hình (hoặc được máy in in ra giấy).

3.9 Định dạng số dấu phẩy động

Số không có phần thập phân là số nguyên. Số 36 là số nguyên. 36,375 không phải là số nguyên. Là số thập phân có phần thập phân. Phần thập phân của 0,375 là một phân số nhỏ hơn 1.

36.375 được hiểu dưới dạng thập phân là:

Hiện nay:

Vì vậy, 100100 2 = 3610 là phần nguyên của 36,375 10 .

Hiện nay:

Vì vậy, 0,011 2 = 0,375 10 đó là phần thập phân của 36,375 10 .

∴ 36.375 10 = 100100,011 2

Nói cách khác:

100100.011 2 = 36,375 10

Các số được biểu diễn trong máy tính theo cơ số 2 chứ không phải cơ số 10, với mọi thứ đều bằng nhau. Vì một ô trong thanh ghi trong bộ vi xử lý hoặc một ô trong bộ nhớ chỉ có thể nhận 1 hoặc 0 nên không còn chỗ để lưu dấu thập phân. Điều này đặt ra một vấn đề. Về độ phân giải, có biểu diễn dấu phẩy động 32-bit có độ chính xác đơn IEEE-754 và biểu diễn dấu phẩy động 64-bit có độ chính xác kép của IEEE-754.

Định dạng số dấu phẩy động 32-bit
Số 100100.0112 có thể được biểu diễn dưới dạng:

100100.011 2 = 1,00100011 2 x 2 +5

Vế phải của ký hiệu = được gọi trong toán học là dạng chuẩn cơ số hai của vế trái của 100100.011 2 .

Bây giờ, 00100011 trên 1,00100011 2 ở phía bên phải của ký hiệu =, không có “1” trước đó. và không có số 2 làm cơ sở, được gọi là ý nghĩa tường minh. Trong trường hợp này, điểm nhị phân được lấy năm vị trí bên trái để có số “1”. Đừng nhầm lẫn giữa dấu thập phân và dấu nhị phân. Dấu nhị phân dành cho cơ số 2, trong khi dấu thập phân dành cho cơ số 10. Số “1”. theo sau là 00100011 ở phía bên phải của ký hiệu =, không có số 2 làm cơ sở, tạo thành ý nghĩa thực sự. Tuy nhiên, 1.00100011 được gọi là ý nghĩa tiềm ẩn.

Sau dấu ở vế phải là chữ “x 2 +5 ' sự biểu lộ. Với biểu thức này, +5 được gọi là số mũ. Dấu cộng có nghĩa là điểm nhị phân phải được di chuyển về phía trước năm vị trí để ở vị trí ban đầu bình thường và 2 là cơ sở để đánh số. Phương trình trước có thể viết ngược lại như sau:

1.00100011 2 x 2 +5 = 100100,011 2

Với biểu diễn dấu phẩy động 32 bit, nó là “1.00100011 2 x 2 +5 ” được sử dụng chứ không chỉ “100100.011 2 ”. Số 2 cho cơ sở không được ghi lại. Biểu diễn dấu phẩy động 32 bit cho “1.00100011 2 x 2 +5 ” số, bằng 36,375 10 = 100100,011 2 , được thể hiện trong bảng sau:

Có các vị trí 32 bit được đánh số từ đầu bên phải, bắt đầu từ 0. Bit đầu tiên ở đầu bên trái là bit dấu. Nếu số dương thì bit này là 0. Nếu số âm thì bit này là 1 (-1 gồm hai ký tự và không thể đặt vào bất kỳ ô nào). 1.00100011 2 x 2 +5 bằng 36,375 10 cũng bằng 100100.011 2 là một số dương. Vì vậy, bit đầu tiên là 0.

Có tám vị trí bit cho số mũ, bắt đầu từ vị trí 30 đến vị trí 23. Tuy nhiên, số mũ được viết ở đó là 10000100 2 bằng 132 10 . Số mũ của số lãi thực tế là +5 cơ số hai. Vì vậy, những gì xảy ra?

Bây giờ, ở định dạng 32 bit, số mũ bằng 0 được viết là 01111111 2 bằng 127 10 . +5 10 là +101 2 . Vì vậy, khi đạt tới 10000100 2 ở phần số mũ trong bảng, 101 2 đã được thêm vào 01111111 2 , tương ứng. Nghĩa là thêm 5 vào 127 để được 132 10 .

Ý nghĩa và không có '1.', đã đưa toàn bộ vị trí 22 xuống còn 15. Lưu ý rằng số 1 của “1.” chưa được chỉ định trong chuỗi 32 bit. Nó không bao giờ được chỉ ra - hãy chấp nhận điều đó. Các ô còn lại ở vị trí 0 được điền bằng số không.

Nếu số mũ thực tế là -5 thì 5 sẽ bị trừ từ 127 10 có 122 10 . Điều này tương ứng với phép trừ 101 2 từ 01111111 2 có 01111010 2 .

Với tất cả hình minh họa trước, số +1 bằng 1,0 x 2 0 = 1,0 x 1 = 1,0 được biểu diễn dưới dạng:

Lưu ý rằng “1.” của 1,0 x 2 0 không được chỉ định trong định dạng. Nó không bao giờ được chỉ định. Phân số hỗn hợp tiếp theo dương sau 1,0 là:

Chú ý số 1 ở cuối bên phải. Đại diện này là số:

Sự khác biệt giữa 1,0000001192092896 và 1,0 là:

1,0000001192092896 – 1,0 = 0,0000001192092896

Các số có phần thập phân là các phân số hỗn hợp. Không phải tất cả các phân số giữa 1 10 và 2 10 có thể được biểu diễn trong máy tính. Có thể giả định rằng khoảng cách phân số nhỏ nhất giữa các số hỗn hợp liên tiếp với định dạng dấu phẩy động 32 bit là 0,0000001192092896. Mong đợi khoảng thời gian cho độ chính xác gấp đôi sẽ nhỏ hơn. Hãy tham khảo hình minh họa sau.

Đại diện cho số, 0,0 không tuân theo các đối số trước đó. Biểu diễn cho 0,0 được khai báo và phải được học như vậy. Để biểu thị 0,0, tất cả các ô cho số có ý nghĩa và là 0 và tất cả các ô cho số mũ cũng bằng 0. Bit dấu có thể là 0 hoặc 1. Thật không may, điều này dẫn đến 0 dương và 0 âm như sau:

Trong cuộc sống thực, chỉ có một số không. Số 0 dương và số 0 âm không tồn tại. Tuy nhiên, 0 thường được coi là dương. Số 0 dương và số 0 âm tồn tại ở đây vì mô tả định dạng cụ thể này. Trục số (xem ở trên) cũng có thể có +0 và -0, nhưng chỉ tồn tại một số 0.

Định dạng số dấu phẩy động 64-bit
Định dạng dấu phẩy động 64 bit tương tự như định dạng 32 bit nhưng có những điểm khác biệt sau:

  • Có 64 bit để biểu diễn một số.
  • Sau bit dấu có 11 bit là số mũ.
  • Số mũ cho chỉ số 0 (2 0 ) là 1023 10 = 01111111111 2 .
  • Mười một bit được theo sau bởi 52 bit cho ý nghĩa rõ ràng.
  • Nó có phạm vi số rộng hơn định dạng 32 bit.

Lưu ý rằng “1.” đó là phần đầu của ý nghĩa và vẫn không được bao gồm trong số 64 bit, cũng như nó không được bao gồm trong số 32 bit đối với định dạng 32 bit.

Một trong những khác biệt quan trọng nhất giữa định dạng 64 bit và định dạng 32 bit là sự khác biệt giữa các phân số hỗn hợp liên tiếp ở định dạng 64 bit nhỏ hơn so với định dạng 32 bit.

Ở định dạng 64 bit, khoảng (khoảng cách) giữa 1,0 và phân số hỗn hợp tiếp theo có thể được tính như sau:

1.0 là

0 01111111111 0000000000000000000000 00000000000 00000000000000000000000 2

Điều này tương đương với “1.”, chưa được biểu thị trong chuỗi, nhân với 2 được nâng lên lũy thừa (chỉ số) 0 (với số mũ là 1023 10 = 01111111111 2 dành cho 2 0 = 1). Chuỗi là 1,0 x 2 0 .

Phân số hỗn hợp tiếp theo lớn hơn 1,0 là:

0 01111111111 0000000000000000000000 00000000000 00000000000000000000001 2

Điều này tương đương với “1.” không được chỉ định trong chuỗi, theo sau là 51 số 0 và sau đó là 1, nhân với 2 lũy thừa 0 (với số mũ là 1023 10 = 011111111112 2 dành cho 2 0 = 1). Điều này cũng giống như:

+2 0 × (1 + 2− -52 ) ≈ 1,0000000000000002

≈ có nghĩa là gần bằng.

Hiện nay:

1,0000000000000002 – 1,0 ≈ 0,0000000000000002

Giá trị khoảng tương ứng cho định dạng 32 bit là 0,0000001192092896 ≈ 0,00000012.

0,0000000000000002 nhỏ hơn nhiều so với 0,00000012. Vì vậy, có nhiều phân số hỗn hợp hơn giữa hai số nguyên liên tiếp (ví dụ: 3 và 4) ở định dạng 64 bit so với giữa hai số nguyên liên tiếp ở định dạng 32 bit.

Số phân số hỗn hợp giữa hai số nguyên liên tiếp trên trục số là vô hạn. Vì vậy, không có định dạng nào (ví dụ: 32 bit hoặc 64 bit) có thể cung cấp tất cả các phân số hỗn hợp giữa hai số nguyên liên tiếp bất kỳ (số nguyên). Khoảng cách (khoảng) giữa hai số nguyên liên tiếp được cung cấp bởi một định dạng (ví dụ: 32 bit hoặc 64 bit) càng nhỏ thì số phân số hỗn hợp giữa các số nguyên liên tiếp (đối với dòng số) càng lớn.

Lý do tại sao định dạng 64 bit được mô tả là có độ chính xác gấp đôi hoặc cao hơn so với định dạng 32 bit là khoảng cách giữa hai phân số hỗn hợp liên tiếp được giới hạn bởi hai số nguyên liên tiếp đối với định dạng 64 bit nhỏ hơn 32 tương ứng. khoảng định dạng -bit. Ngoài ra, có nhiều phân số hỗn hợp có thể có giữa hai số nguyên giới hạn đối với định dạng 64 bit so với số lượng tương ứng đối với định dạng 32 bit.

Chuyển đổi một phần thập phân (phân số) của số thập phân thành phần nhị phân
36.375 là số thập phân có phần thập phân là “.375”. Phần thập phân của “.375” là phân số nằm giữa 0 và 1. 0,5 trong cơ số mười có giá trị tương đương với 1/2 trong cơ số hai. 0,5 10 được biểu diễn bằng khai triển cơ số hai là:

Nó không phải là 0,101 2 có nghĩa là 0,625 10 . Phần thập phân của số thập phân có phần nhị phân tương đương với số nhị phân tương ứng. Vì vậy, để chuyển đổi một số thập phân như 36,375 10 sang cơ số hai, chuyển 36 sang nhị phân và sau đó chuyển 0,375 sang nhị phân. Sau đó, nối cả hai kết quả với điểm nhị phân. Các phương pháp để chuyển đổi hai phần là khác nhau. Cách chuyển một số nguyên thập phân sang cơ số 2 được giải thích ở chương 1.

Để chuyển đổi phân số thập phân sang phân số nhị phân, hãy làm theo các bước sau:

  • Nhân phân số thập phân (phần thập phân) với 2. Số nguyên thu được từ kết quả này là chữ số nhị phân đầu tiên.
  • Lặp lại bước trước với kết quả thập phân phân số để lấy chữ số nhị phân tiếp theo.
  • Tiếp tục lặp lại bước trước cho đến khi kết quả phân số thập phân là 0,0000—.

Ví dụ: Chuyển đổi phần phân số của 36,375 10 đến phần phân số tương đương trong cơ số hai.

Giải pháp:

Lưu ý rằng ở bước thứ ba, 0,500 được nhân với 2 chứ không phải 1,500. Phân số nhị phân tương ứng được đọc ở cột cuối cùng từ trên xuống. Và như vậy, kết quả sau đây là:

.375 10 = 0,011 2

Chuyển đổi Phần nhị phân (Phân số) của số nhị phân thành Phần thập phân
Để đạt được điều này, hãy mở rộng phân số nhị phân theo lũy thừa nghịch đảo của 2.

Ví dụ: Chuyển đổi phần phân số của 100100.011 2 đến phần phân số tương đương trong cơ số mười.

Giải pháp:

3.10 Tiền tố số trong máy tính

Trong cuộc sống bình thường, 1 kilo có nghĩa là 1000 được viết tắt là k (chữ thường) như 1kg. Trong điện toán, 1 kg có nghĩa là 2 10 = 1024 nhưng được viết tắt là K (chữ hoa) là 1Kbits. Trong cuộc sống bình thường, 1 mega có nghĩa là 1.000.000 được viết tắt bằng M (chữ hoa) như 1Mg. Trong điện toán, 1 mega có nghĩa là 2 hai mươi = 1.048.576 = 2 10 x 2 10 = 1024 x 1024 = 1.048.576 và vẫn được viết tắt là M (chữ hoa) như 1Mbits. Trong cuộc sống bình thường, 1 giga có nghĩa là 1.000.000.000 được viết tắt bằng G (chữ hoa) như trong 1Gg. Trong điện toán, 1 giga có nghĩa là 2 30 = 1.073.741.824 = 2 10 x 2 10 x 2 10 = 1024 x 1024 x 1024 = 1.073.741.824 và vẫn được viết tắt là G (chữ hoa) như 1Gbits. Bảng sau đây đưa ra ý nghĩa của bốn tiền tố trong cuộc sống bình thường và trong máy tính:

3.11 Vấn đề

Người đọc nên giải quyết tất cả các vấn đề trong một chương trước khi chuyển sang chương tiếp theo.

  1. Vẽ trục số chứa các số nguyên từ -10 đến +10.
  2. Thêm các số nhị phân sau vào phần bù hai 8 bit: 101010 2 và 1111 2 .
  3. Chỉ sử dụng phương pháp bù hai trong 8 bit để trừ số nhị phân 1111 2 từ số nhị phân 101010 2 .
  4. Tìm tích của 10110 2 x 1101 2 ở cơ sở hai.
  5. Chia 36.375 10 đến 1000 10 ở dạng thập phân và nhị phân rồi so sánh kết quả.
  6. Sử dụng 8 bit bạn chọn để minh họa logic AND, OR, XOR, Đảo ngược, Dịch phải, Dịch trái, Xoay phải và Xoay trái. Mỗi byte phải có hỗn hợp 1 và 0.
  7. a) Viết mã số cho ký tự ASCII số 0 ở dạng thập lục phân, nhị phân và thập phân.
    b) Viết mã số cho ký tự ASCII của “1” ở dạng thập lục phân, nhị phân và thập phân.
    c) Viết mã số cho ký tự ASCII của “A” ở dạng thập lục phân, nhị phân và thập phân.
    d) Viết mã số cho ký tự ASCII của “a” ở dạng thập lục phân, nhị phân và thập phân.
  8. Quy đổi 49,49 10 vào cơ sở hai. Chuyển đổi kết quả của bạn sang định dạng dấu phẩy động IEEE 32-bit.
  9. a) Định dạng dấu phẩy động 64-bit của IEEE khác với định dạng 32-bit như thế nào?
    b) Đưa ra hai lý do liên quan tại sao định dạng 64-bit được mô tả là có độ chính xác gấp đôi hoặc cao hơn định dạng
    Định dạng 32-bit.