Máy tính lưu trữ dữ liệu như thế nào ?
Dẫn dắt
Khi nhập vào nội dung gì đó chẳng hạn như "abc" rồi bấm lưu, qua mấy ngày sau, click vào xem lại vẫn thấy máy tính vẫn show đúng "abc" ra màn hình.
Vậy máy tính lưu thẳng "abc" vào phần cứng luôn đúng không ?
Không ạ, máy tính chuyển tất cả về "0" và "1" rồi mới lưu.
Nhị phân
Thật vậy, bây giờ có "bổ đầu" máy tính ra làm đôi thì cũng chỉ thấy "0" và "1" thôi 🐵 Đó là trường hợp may mắn, còn không may thì bổ ra xong không còn thấy gì nữa 🐭🐭
Số "0" đại diện cho "tắt", số 1 đại diện cho "bật". Máy tính chứa hàng triệu, hàng tỷ chiếc bóng đèn đang tắt và bật để nhận diện và ghi nhớ dữ liệu.
Vì là 2 con số nên được gọi là "nhị", tên hoa mỹ hơn gọi là "nhị phân" , tên đầy đủ là "Hệ nhị phân".
Số
Vậy máy tính chỉ cầm trên tay 2 chiếc bóng đèn là "0" và "1" thì làm sao nhận diện và lưu trữ được chuỗi số 0->9 (10 chữ số nên được gọi là Hệ thập phân), rồi chục nghìn trăm nghìn, chục triệu trăm triệu ?
Không hề khó, khi nào thiếu thì thêm vào thôi. Nếu chỉ có 1 chiếc bóng đèn thì chỉ có thể lưu số 0 hoặc số 1, nhưng nếu chúng ta nhiều bóng đèn hơn thì có thể "đặt tên" cho nhiều số hơn.
a.Nếu chỉ có 1 bóng đèn
Số 0: 0
Số 1: 1
b.Nếu có 2 bóng đèn
Số 0: 00
Số 1: 01
Số 2: 10
Số 3: 11
c.Nếu có 3 bóng đèn
Số 0: 000
Số 1: 001
Số 2: 010
Số 3: 011
Số 4: 100
Số 5: 101
Số 6: 110
Số 7: 111
Thật kỳ diệu, chỉ với 3 chiếc bóng đèn mà có thể đặt tên cho 7 con số, không con nào trùng tên với con nào luôn.
Mỗi bóng đèn được gọi là 1 bit, thì chúng ta cần 3 bit để lưu trữ và biểu diễn các số từ 0 đến 7.
Trở về với máy tính, máy tính thường sử dụng 8 bit để lưu trữ và biểu diễn một số.
Ví dụ, số 7 sẽ được lưu trữ ở dạng 8 bóng đèn (8 bit) là 00000111.
Các bạn có thể thử viết tên các con số tiếp theo ra giấy theo quy tắc "0-1-10-11-thêm 1 và reset lại về 0" rồi tra theo cú pháp "số x nhị phân" để check xem mình viết đúng chưa nhé. Ví dụ tiếp nối:
Số 7: 111 (Đã xài hết bóng đèn)
Số 8: 1000 (Thêm 1 và reset lại về 0)
Số 9: 1001 (Là 1 đây)
Số 10:1010 (Là 10 đây)
Chữ
Số thì biết máy tính dùng "0" với "1" rồi, vậy còn chữ thì sao ? Câu trả lời là, "cũng 0 với 1" luôn.
Nhưng để tránh việc trùng lặp chữ và số, người ta sinh ra thêm bộ mã ASCII để phân chia ranh giới.
Những ký tự trong bảng ASCII này quen lắm đúng không ? Vâng, chính là bàn phím của bạn.
Chữ cái sẽ được chuyển đổi qua hệ thập phân dựa theo bộ mã ASCII này, rồi từ số thập phân đó quy đổi sang hệ nhị phân.
Kiểu ký tự → Kiểu số (Hệ thập phân) → Kiểu bit (Hệ nhị phân)
Ví dụ: Chữ A được biểu diễn bằng số 65 → Ổ cứng của máy tính sẽ lưu chữ A dưới dạng 1000001 (Mã nhị phân của số 65) Đối với mỗi ký tự trong bộ mã ASCII thì máy tính cấp 1 ngăn chứa gồm 8 bit để biểu diễn ký tự. 1 ngăn đó được gọi là 1 byte.
- 1kilobyte (KB) = 1024 bytes
- 1megabyte (MB) = 1024 KB
- 1gigabyte (GB) = 1024 MB= 1 073 741 824 bytes
Nghĩa là 1 GB là có hơn 1 tỷ ngăn chứa ký tự.
Chiếc điện thoại các bạn cầm trên tay là 32 GB hay 64 GB hay 128 GB thì cứ thế ước lượng xem có bao nhiêu ngăn chứa, có thể lưu trữ được bao nhiêu dữ liệu nhé.
Biểu tượng cảm xúc
Hay còn gọi là Emoji thì biểu thị cách gì ?
Người ta lại sinh thêm ra bộ mã tên là Unicode để đặt tên cho từng biểu tượng.
Không giống như bộ mã ASCII được thiết kế để chỉ đại diện cho các ký tự tiếng Anh cơ bản, bộ mã Unicode được thiết kế để hỗ trợ các ký tự từ tất cả các ngôn ngữ trên thế giới.
Bộ ký tự ASCII tiêu chuẩn chỉ hỗ trợ 128 ký tự, trong khi Unicode có thể hỗ trợ khoảng 1.000.000 ký tự.
Trong khi ASCII chỉ sử dụng 1 byte để đại diện cho mỗi ký tự, Unicode hỗ trợ tối đa 4 byte cho mỗi ký tự.
![image.png] Bảng mã Unicode có 172 font chữ, một số font chữ phổ biến thường dùng như: Times New Roman, Tahoma, Arial,…
Ví dụ 1: Điểm mã U+0041 là số hexa 0041 (tương đương số thập phân 65). Nó biểu diễn ký tự “A” trong chuẩn Unicode.
Ví dụ 2: Xâu ký tự "Hello" trong Unicode, xâu ký tự này tương ứng với 5 điểm mã (lưu ý là 5 điểm mã chứ không phải 5 byte): U+0048 U+0065 U+006C U+006C U+006F “U+” tượng trưng cho “Unicode”, còn phần hệ số là hệ hexa.
Ví dụ 3:
- Icon 😃
- Tên: SMILING FACE WITH OPEN MOUTH
- Mã trong Unicode: U+1F603
- Mã UTF-8: F0 9F 98 83
Có thể tham khảo [https://unicode.org/emoji/charts/full-emoji-list.html] để biết thêm chi tiết.
Màu sắc
Bạn đã nghe qua khái niệm RGB bao giờ chưa ? Đó là viết tắt của Red-Green-Blue (Đỏ, lục và lam) là sự kết hợp của ba số.
Chuỗi 72, 73 và 33 được biểu diễn trong bảng ASCII sẽ ra chữ "HI!", ở bộ mã RGB hiểu là màu vàng nhạt.
Giá trị màu đỏ sẽ là 72, giá trị màu xanh lá cây sẽ là 73 và màu xanh lam là 33.
Bùm ! Đây là kết quả :
Hình ảnh, video và âm thanh
Hình ảnh chỉ đơn giản là tập hợp các giá trị RGB.
Video là chuỗi nhiều hình ảnh được lưu trữ cùng nhau, giống như một cuốn sách lật.
Đen Vâu có viết đoạn "Chiếc máy tính mà con thu âm mấy bài đầu, mẹ đổi bằng nhiều ngày đổ mồ hôi" thì đúng như câu từ, thu âm từ máy tính chứ không phải máy thu âm nào khác. Riêng âm nhạc thì được thể hiện thông qua dữ liệu MIDI.
Chi tiết có thể xem ở đây. https://www.thegioididong.com/hoi-dap/file-midi-la-gi-ban-chat-co-che-hoat-dong-cua-midi-trong-1365434
Như vậy chúng ta có thể mường tượng cách dữ liệu cơ bản được ghi vào máy tính như thế nào rồi.
Chỗ nào trong bài còn chưa rõ mời bạn comment bên dưới nhé.
All rights reserved