Ủng hộ tôi
Con người quen thuộc với các con số, chữ cái, âm thanh, màu sắc, … vì cơ thể của chúng ta có những giác quan để cảm nhận và có bộ não để tổng hợp, phân tích, xử lý chúng. Nhưng máy tính thì ngược lại, máy tính chỉ là một thiết bị vật lý chỉ có thể xử lý, lưu trữ, truyền/nhận các tín hiệu số. Vì thế, để máy tính có thể hiểu các con số, chữ cái, âm thanh, màu sắc, … thì chúng ta cần phải biểu diễn chúng thành các tín hiệu số để máy tính có thể hiểu. Vì các tín hiệu số này chỉ mang 2 giá trị 0 và 1 nên chúng ta có thể dùng các bit (binary digit - ký số nhị phân) để đại diện cho chúng.
Các chuỗi bit thường khá dài, dẫn đến rất dễ nhàm chán và dễ sai sót trong quá trình biểu diễn, vì thế chúng ta sử dụng hệ thống số thập lục phân để biểu diễn lại chuỗi bit. Hệ thập lục phân có 2 ưu điểm lớn đó là:
Giá trị lớn nhất của 1 ký số lớn nên sẽ cần ít ký số khi biểu diễn giá trị
Là lũy thừa của hệ nhị phân nên rất dễ khôi phục về chuỗi bit
Lưu ý là chúng ta dùng hệ thập lục phân để biểu diễn lại chuỗi bit để tránh sai sót cho con người chứ không sử dụng hệ thập lục phân để lưu trữ, xử lý, truyền thông tin trong máy tính.
Hệ thập lục phân bao gồm 16 ký số, bao gồm 0, 1, … 8, 9, A, B, C, D, E và F, trong đó các ký số từ 0 đến 9 biểu diễn giá trị từ 0 đến 9, các ký số A đến F lần lượt biểu diễn giá trị từ 10 đến 15.
Mỗi ký số trong hệ thập lục phân tương ứng với 1 nhóm 4 ký số trong hệ nhị phân (4 bit) vì thế có thể chuyển qua lại giữa 2 hệ thống số này một cách đơn giản. Ví dụ chuỗi bit 0111 1101 0000 trong hệ nhị phân sẽ chuyển thành 7D0 trong hệ thập lục phân.
Để phân biệt với các hệ thống số khác thì chúng ta sẽ thêm tiền tố 0x vào trước chuỗi ký số thập lục phân để biểu thị đây là chuỗi ký số được biểu diễn trong hệ thập lục phân, ví dụ: 0x7D0. Ngược lại, 0x7D0 cũng sẽ đơn giản chuyển về nhị phân, với 0x7 là 0111, 0xD là 1101 và 0x0 là 0000.
Ngoài cách thêm tiền tố 0x vào trước chuỗi ký số thì chúng ta có thể thêm hậu tố vào sau chuỗi ký số thập lục phân để biểu thị đây là chuỗi ký số được biểu diễn trong hệ thập lục phân, ví dụ: 7D0h.
Xem bài giảng về biểu diễn thập lục phân tại video: https://youtu.be/GxJDgeQzEkI
Biểu diễn bù 2 là phương pháp biểu diễn số nguyên có dấu trong các hệ thống máy tính hiện đại ngày nay. Phương pháp này sử dụng trọng số âm cho bit ngoài cùng bên trái, nếu bit này bằng 0 thì sẽ biểu diễn số dương, nếu bit này bằng 1 thì biểu diễn số âm, vì thế bit này còn được gọi là bit dấu.
Theo đó, một chuỗi N bit sẽ mã hóa giá trị số có dấu theo công thức 2.1.
Nếu bit dấu là 0 và tất cả các bit còn lại là 1 thì chúng ta sẽ biểu diễn được giá trị lớn nhất là +(2N-1 - 1). Nếu bit dấu là 1 và tất cả các bit còn lại là 0 thì chúng ta sẽ biểu diễn được giá trị nhỏ nhất là -2N-1. Bên cạnh đó, chúng ta chỉ còn 1 cách để biểu diễn giá trị 0 đó là 0...0.
Công thức 2.1: Giá trị của chuỗi bit
Xem xét việc hiện cộng 2 số N bit có giá trị -1 và +1 với nhau, với -1 được biểu diễn là 11...111 và +1 được biểu diễn là 00...001. Rõ ràng kết quả sẽ là 00...000 như bên dưới, và 00...000 biểu diễn giá trị 0.
Điều này mang ý nghĩa rất to lớn, vì thay vì phải thực hiện phép trừ 1 cho 1 thì chúng ta có thể thực hiện phép cộng giữa 1 với -1, theo đó chúng ta có thể loại bỏ phép trừ hoặc có thể hiểu là đồng nhất phép toán trừ vào phép toán cộng.
Về tổng quát, để thực hiện phép toán B - A, thì chúng ta có thể chuyển thành thực hiện phép toán B + (-A). Việc biểu diễn -A đơn giản chỉ là hệ quả của thao tác:
A + (-A) = 0 = 1 + -1
=> -A = (-1 - A) + 1 = ~A + 1.
Trong đó, ~A nghĩa là đảo từng bit của A.
Như vậy, để biểu diễn bù 2 của 1 số âm thì đơn giản là đảo ngược các bit giá trị tuyệt đối của nó rồi sau đó cộng thêm 1.
Xem bài giảng về phương pháp biểu diễn bù 2 tại video: https://youtu.be/4Tfblc2V6CU
Xem thực hành về phương pháp biểu diễn bù 2 tại video: https://youtu.be/z7Hadjho6Dg
IEEE 754 là một tiêu chuẩn quốc tế được sử dụng để định dạng số thực dấu chấm động trong máy tính. Tiêu chuẩn này được phát triển bởi Viện Kỹ sư Điện và Điện tử (IEEE) và được công bố lần đầu tiên vào năm 1985. IEEE 754 cung cấp một cách thức định dạng số thực dấu chấm động gọn nhẹ và hiệu quả cho việc tính toán số học trên các thiết bị số học.
IEEE 754 định nghĩa một số đặc tả về các số thực dấu chấm động bao gồm:
Độ chính xác: Độ chính xác của một số thực dấu chấm động được xác định bởi số bit được dành cho phần định trị và phần mũ của số.
Kích thước: Kích thước của số thực dấu chấm động được xác định bởi số bit được dành cho phần tử và phần mũ của số.
Dấu: IEEE 754 xác định cách biểu diễn dấu của một số thực dấu chấm động bằng cách sử dụng một bit đặc biệt để chỉ ra dấu của số. Bit dấu luôn luôn là bit bên trái nhất của biểu diễn.
Phần định trị: Đây là phần của số thực dấu chấm động dùng để lưu trữ giá trị của số. Phần định trị của một số thực dấu chấm động trong IEEE 754 được biểu diễn dưới dạng dãy bit nhị phân.
Phần mũ: Phần mũ của một số thực dấu chấm động trong IEEE 754 được sử dụng để biểu diễn các số mũ của số.
IEEE 754 cung cấp hai định dạng cho số thực dấu chấm động là đơn chấm động và kép chấm động, mỗi định dạng lại có hai phiên bản 32 bit và 64 bit.
Về bản chất, chuỗi ký tự là một mảng các ký tự liên tiếp nhau (trong một số quy ước thì chuỗi là một mảng các ký tự với ký tự kêt thúc là ký tự NULL). Như vậy, để biểu diễn được một chuỗi ký tự thì trước tiên chúng ta tìm hiểu cách biểu diễn từng ký tự, sau đó nối các biểu diễn từng ký tự lại với nhau để hình thành được biểu diễn của một chuỗi ký tự. Hiện nay, có nhiều chuẩn mã hóa ký tự, nhưng phổ biến nhất là ASCII và Unicode.
ASCII là thuật ngữ viết tắt của American Standard Code for Information Interchange (Mã trao đổi thông tin chuẩn Hoa Kỳ). ASCII dùng 7 bit để biểu diễn 1 ký tự, do đó chỉ có thể biểu diễn được tối ta 27 = 128 ký tự, trong đó chỉ có 95 ký tự là nhìn thấy được, các ký tự còn lại là các ký tự điều khiển không thể nhìn thấy. Bảng 2.1 trình bày toàn bộ 128 ký tự mà ASCII có thể biểu diễn, trong đó cột đầu tiên biểu diễn 3 bit đầu, hàng đầu tiên biểu diễn 4 bit cuối, các ký tự nhìn thấy được là các ký tự được in đậm và tô xanh (từ 0100000 đến 1111110). Lưu ý 010000 là biểu diễn của ký tự khoảng trắng (SP - SPace).
Bảng 2.1: Bảng ASCII
ASCII còn có phiên bản mở rộng sử dụng 8 bit để biểu diễn 1 ký tự, bạn đọc có thể xem thêm tại: ASCII mở rộng – Wikipedia tiếng Việt
Unicode là thuật ngữ viết tắt của Uniform Code (Mã thống nhất) tương thích ngược với ASCII và ASCII mở rộng (nghĩa là ASCII mở rộng được xem như là một phần của Unicode). Unicode bao gồm các phiên bản phổ biến là UTF-8 (dùng từ 1 đến 6 byte để biểu diễn 1 ký tự), UTF-16 (dùng 20 bit để biểu diễn 1 ký tự) và UTF-32 (dùng 32 bit để biểu diễn 1 ký tự). UTF là thuật ngữ viết tắt của Unicode Transform Format - Định dạng chuyển đổi Mã thống nhất, và UTF-8 là phiên bản được sử dụng phổ biến nhất hiện nay.
Sẽ được cập nhật sau ....