Trình bày dữ liệu bằng số nhị phân (tiếp tục)
Được biết đến nhiều là, C# không sáng tạo toàn bộ kế hoạch và quy tắc cho hầu hết các
dạng của nó. Thế giới điện toán đã phát triển các kế hoạch cho các dạng phổ biến như các
số và chữ, và C# sử dụng lại các kế hoạch này khi có thể. Phần cứng vật lí của máy tính cũng
sử dụng các kế hoạch tương tự. Vì nó được đưa vào mạch, nó có thể nhanh.
Chi tiết của các kế hoạch này vượt quá phạm vi của học phần này, nhưng hãy làm một đôi thí nghiệm
để khám phá.
Giả sử chúng ta muốn trình bày các số 0 qua 10. Chúng ta cần tạo ra một cách thức để mô tả mỗi số này
với chỉ 0’s và 1’s. Bước 1 là quyết định có bao nhiêu bits để sử dụng. Một bit có thể lưu giữ hai trạng
thái có thể (0 và 1) và mỗi bit bạn thêm vào sau cái tăng đôi hai khả năng có thể tổng cộng. Chúng ta có
11 trạng thái có thể, nên chúng ta sẽ cần ít nhất 4 bits để trình bày tất cả chúng. Bước 2 là định hình ra
các mô hình bits nào để gán cho mỗi số. 0 có thể là 0000. 1 có thể là 0001. Bây giờ nó đi vào phức tạp hơn
một chút. 2 là 0010, và 3 là 0011 (Chúng ta đang đếm bằng số nhị phân nếu cái đó tình cờ quen thuộc với bạn).
Chúng ta đã sử dụng lên tất cả các kết hợp có thể của 2 bits ở bên phải và cần sử dụng bit thứ ba. 4 là 0100,
5 là 0101..vv.. tất cả trên đường tới 10, cái là 1010. Chúng ta có một vài mô hình bits chưa sử dụng. 1011 không
là cái gì hết. Chúng ta có thể đi tất cả trên đường lên tới 15 mà không cần nhiều bits hơn.
Chúng ta có một vấn đề: máy tính không làm việc tốt với bất cứ thứ gì nhỏ hơn các bytes đầy đủ. Không là việc
lớn, chúng ta sẽ sử dụng một byte đầy đủ của 8 bits.
Nếu muốn biểu diễn các chữ , chúng ta có thể làm điều tương tự. Chúng ta có thể gán chữ A cho
01000001, B cho 01000010, v.v. (C# thực sự sử dụng hai byte cho mọi ký tự). Nếu muốn trình bày text (một chuỗi)
, chúng ta có thể sử dụng các chữ làm khối xây. Có lẽ chúng ta có thể sử dụng một byte đầy đủ để trình bày
text của chúng ta có bao nhiêu chữ và sau đó sử dụng hai bytes cho từng chữ trong từ. Điều này là mẹo vì các
từ ngắn cần sử dụng ít byte hơn các từ dài, và hệ thống của chúng ta phải tính đến điều đó. Nhưng đây sẽ là một
kế hoạch khả thi.
May mắn thay, chúng ta không phải tự mình tạo ra những kế hoạch này cho các dạng. Ngôn ngữ C# có quan tâm chúng cho
chúng ta. Nhưng hy vọng rằng điều này minh họa tại sao chúng ta không thể xử lý một số nguyên và một chuỗi như là cùng
thứ. (Mặc dù chúng tôi sẽ có thể chuyển đổi từ dạng này sang dạng khác.)