CODE: 9 - Bit by Bit by Bit
Các chương đã dịch. Khi Tony Orlando đề nghị trong một bài hát được yêu thích vào năm 1973 " Tie a Yellow Ribbon Round the...
Khi Tony Orlando đề nghị trong một bài hát được yêu thích vào năm 1973 "Tie a Yellow Ribbon Round the Ole Oak Tree", ông sẽ không đưa ra những lời giải thích tỉ mỉ hay thảo luận gì thêm. Ông không muốn nói nhiều. Mặc dù với những phức cảm và nguồn gốc đầy xúc động đã xảy ra trong một tình huống có thật mà bài hát dựa vào, thì với cánh đàn ông tất cả những gì họ muốn chỉ là một câu trả lời có hoặc không đơn giản. Anh ta muốn một sợi ruy-băng vàng thắt quanh thân cây có nghĩa là "Vâng, mặc dù anh đã gây ra nhiều vụ lộn xộn và đã vào tù ba năm, thì em vẫn muốn anh quay trở về dưới mái nhà này bên em". Và muốn sự vắng mặt dải ruy-băng vàng ấy được hiểu là "Đừng có mà nghĩ tới việc dừng lại tại đây nhá".
Đây là hai sự thay thế rõ ràng loại trừ lẫn nhau. Tony Orlando đã không hát, "Hãy thắt nửa sợi ruy-băng vàng nếu em vẫn còn do dự" hay "Thắt một dải ruy-băng xanh dương nếu em không còn yêu anh nữa nhưng vẫn muốn là bạn hiền của nhau." Thay vào đó, ông đã làm việc đó rất rất đơn giản.
Hiệu quả tương tự như sự có hay vắng mặt của dải ruy-băng vàng (nhưng có lẽ là sẽ khá ngượng nghịu khi đặt vào thơ) có thể là một sự lựa chọn tín hiệu giao thông trong sân trước: Có lẽ là "Nhập làn" hay "Sai Làn".
Hay một biển báo treo trên cửa: "Đóng" hoặc "Mở".
Hay một cây đèn pin trong cửa sổ, được bật hoặc tắt.
Bạn có thể chọn trong cả đống cách để nói có hay không nếu đó là tất cả những gì bạn muốn nói. Bạn không cần cả một câu để nói có hay không; bạn không cần một từ và cũng chẳng cần lấy một chữ. Những gì bạn cần là một bit, và tôi nói vậy có nghĩa là mọi thứ bạn cần chỉ là 0 và 1.
Như ta đã tìm hiểu trong các chương trước, chẳng có gì là đặc biệt với hệ thập phân mà ta thường dùng để tính toán cả. Khá rõ ràng là chúng ta tạo ra hệ chữ số dựa trên mười bởi vì đó là số ngón tay mà ta có. Cũng có thể hệ số của ta sẽ dựa trên tám (nếu chúng ta là các nhân vật hoạt hình) hoặc bốn (nếu ta là tôm hùm) hay thậm chí là hai (nếu ta là cá heo).
Nhưng lại có vài thứ đặc biệt về hệ số nhị phân đấy. Đặc biệt ở chỗ nó là hệ số đơn giản nhất có thể có. Chỉ có duy nhất hai chữ số nhị phân - 0 và 1. Nếu ta muốn thứ gì đó đơn giản hơn, ta phải bỏ đi số 1, và khi đó chỉ còn lại mỗi số 0. Mà ta chẳng làm được gì nhiều với mình nó cả.
Từ bit, đặt ra có nghĩa là binary digit, chắc chắn là một trong những từ dễ thương nhất đã được phát minh trong mối liên quan với máy tính. Tất nhiên, từ đó mang một nghĩa bình thường, "một khoảng, đơn vị, độ nhỏ", và cái nghĩa thông thường ấy hoàn hảo là bởi một bit - một con số nhị phân - thật ra là một lượng rất nhỏ.
Lắm lúc khi một từ mới được tạo ra, nó cũng mang một nghĩa mới. Và điều đó chắc chắn đúng trong trường hợp này. Bit có một nghĩa vượt trên binary digit mà cá heo dùng để đếm. Trong thời đại máy tính, bit được xem như là khối cấu trúc cơ bản của thông tin.
Giờ thì đó là một lời tuyên bố táo bạo, và tất nhiên, các bit không phải là thứ duy nhất truyền thông tin. Chữ cái, từ ngữ, mã Morse, mã Braille và các chữ số thập phân cũng chuyên chở thông tin được vậy. Còn với bit, nó truyền tải một lượng thông tin rất nhỏ. Một bit thông tin là một lượng thông tin nhỏ nhất có thể. Bất kể thứ gì ít hơn một bit thì không mang chút thông tin nào cả. Nhưng vì một bit đại diện cho một lượng thông tin nhỏ nhất có thể, nên những thông tin phức tạp hơn có thể được truyền đi với nhiều bit hơn. (Khi nói một bit truyền đi một lượng "nhỏ" thông tin, hẳn là tôi không có ý xem thông tin giáp với sự không quan trọng. Thật ra, dải ruy-băng vàng là một bit rất quan trọng với hai người quan tâm đến nó.)
Henry Wadsworth Longfellow đã viết "Listen, my children, and you shall hear / Of the midnight ride of Paul Revere" và trong khi ông ta có thể không chính xác về mặt lịch sử khi miêu tả cách mà Paul Revere đã báo hiệu cho người Mỹ về sự xâm lược của Anh, ông đã cung cấp một ví dụ đáng để suy ngẫm về việc sử dụng các bit để truyền đạt thông tin quan trọng:
He said to his friend "If the British march
By land or sea from the town to-night,
Hang a lantern aloft in the belfry arch
Of the North Church tower as a special light,-
One, if by land, and two, if by sea..."
By land or sea from the town to-night,
Hang a lantern aloft in the belfry arch
Of the North Church tower as a special light,-
One, if by land, and two, if by sea..."
Anh ta nhắn đám bạn mình
Nếu đêm tụi Anh điều binh từ thành
Vượt rừng băng biển chẳng lành
Thì treo ngọn đèn trong vành tháp chuông
Trên nhà thờ bắc theo khuôn -
Một cho đi bộ đi xuồng thì hai..."
Nếu đêm tụi Anh điều binh từ thành
Vượt rừng băng biển chẳng lành
Thì treo ngọn đèn trong vành tháp chuông
Trên nhà thờ bắc theo khuôn -
Một cho đi bộ đi xuồng thì hai..."
Nông nỗi quá dịch luôn thơ chơi :D
Tóm gọn lại, cậu bạn của Paul Revere có hai cái đèn lồng. Nếu lính Anh xâm lược bằng đường bộ, thì cậu ta chỉ đặt một cái đèn vào trong tòa tháp nhà thờ. Nếu lính Anh đi đường biển, thì cậu ta sẽ đặt luôn hai cái.
Tuy nhiên, Longfellow không công khai nhắc đến tất cả các tình huống có thể xảy ra. Ông để ngỏ khả năng thứ ba, đó là lính Anh vẫn chưa xâm chiếm. Longfellow ngầm hiểu là trường hợp này sẽ được truyền tin bằng sự vắng mặt các ngọn đèn trong thành nhà thờ.
Hãy giả sử rằng hai cái đèn lồng thực tế được gắn vĩnh viễn vào trong tòa tháp nhà thờ. Những lúc bình thường thì chúng không được thắp sáng:
Điều đó có nghĩa là lính Anh vẫn chưa xâm lược. Nếu một trong các ngọn đèn được thắp thì,
hay
lính Anh đang đến bằng đường bộ. Nếu cả hai đèn đều được thắp sáng,
thì lính Anh đến bằng đường biển.
Mỗi chiếc đèn là một bit. Một cái được được thắp sáng là bit 1 và không được thắp sáng là bit 0. Tony Orlando đã chứng minh cho chúng ta thấy là chỉ cần một bit là đã có thể truyền đi một trong hai tình huống có thể có. Nếu Paul Revere chỉ cần báo động rằng lính Anh đang đến (và không biết đi bằng đường nào hết), thì một cái đèn thôi đã đủ rồi. Đèn sẽ được thắp sáng cho một cuộc xâm lăng và không thắp cho một đêm bình yên khác.
Truyền đi một trong ba tình huống thì cần phải có thêm một cái đèn khác. Một khi đèn thứ hai hiện diện, tuy nhiên, với hai bit lại có thể truyền đi một trong bốn trường hợp:
00 = Anh sẽ không chiếm đánh tối nay.
01= Chúng đến bằng đường bộ.
10 = Chúng đến bằng đường bộ.
11 = Chúng đến bằng đường thủy.
01= Chúng đến bằng đường bộ.
10 = Chúng đến bằng đường bộ.
11 = Chúng đến bằng đường thủy.
Những gì Paul Revere đã làm bằng việc chỉ ra chỉ ba trường hợp thì thực ra là khá ranh. Trong ngôn ngữ của thuyết truyền tin, ông dùng từ redundancy (thừa) để xóa bỏ ảnh hưởng của từ noise (nhiễu). Từ nhiễu được dùng trong lý thuyết giao tiếp để ám chỉ bất cứ thứ gì can thiệp sự truyền tin. Tính tĩnh trên đường dây điện thoại là một ví dụ rõ ràng về việc nhiễu can thiệp vào các cuộc trò chuyện điện thoại. Truyền tin thông qua điện thoại thường thì đều thành công, còn không thì là do ảnh hưởng của nhiễu bởi vì ngôn ngữ nói rườm rà cực kì. Chúng ta không cần phải nghe mọi âm tiết của một từ để mà hiểu hết những gì được nói ra.
Với trường hợp đèn trong tháp nhà thờ, nhiễu có thể ám chỉ đến bóng tối của đêm và khoảng cách tới Paul Revere từ tòa tháp, cả hai có thể làm cản trở anh ta phân biệt cái đèn này với cái đèn kìa. Đây là đoạn trọng yếu trong bài thơ của Longfellow:
And lo! As he looks, on the belfry's height
A glimmer, and then a gleam of light!
He springs to the saddle, the bridle he turns,
But lingers and gazes, till full on his sight
A second lamp in the belfry burns!
A glimmer, and then a gleam of light!
He springs to the saddle, the bridle he turns,
But lingers and gazes, till full on his sight
A second lamp in the belfry burns!
Xem kìa! Trên tháp chuông cao
Lập lòe ánh sáng làm chao lòng người
@#$%^%$#
Lập lòe ánh sáng làm chao lòng người
@#$%^%$#
Chắc chắn không có vẻ như là Paul Revere đang ở vị trí thuận tiện để nhận ra chính xác cái đèn nào được thắp sáng trước.
Khái niệm cơ bản ở đây là thông tin đại diện cho một sự lựa chọn giữa hai hoặc nhiều lựa chọn có thể có hơn. Ví dụ, Khi chúng ta nói với người khác, mọi từ mà ta nói là một sự lựa chọn giữa tất cả các từ có trong từ điển. Nếu chúng ta đếm tất cả các từ trong từ điển từ 1 tới 351.482, thì ta đúng ra ta có thể mang vào các cuộc trò chuyện chính xác các số thay cho những chữ đó. (Tất nhiên, cả hai người nói chuyện đều cần từ điển mà các từ được đánh số sẵn, nếu có đủ kiên nhẫn).
Một khía cạnh khác là bất kỳ thông tin nào mà có thể giảm đi thành một lựa chọn trong hai hoặc nhiều hơn những khả năng có thể có được diễn tả bằng cách sử dụng bit. Không cần phải nói, có rất nhiều dạng giao tiếp của con người mà không cần phải đại diện cho các sự lựa chọn trong các khả năng riêng lẻ và chúng cũng quan trọng cho sự tồn tại của chúng ta. Đây là lý do tại vớsao con người không hình thành các mối quan hệ lãng mạn với máy tính. (Dù gì thì cũng hãy hy vọng rằng bọn họ sẽ không như vậy). Nếu bạn không thể diễn tả thứ gì đó bằng từ ngữ, hình ảnh hay âm thanh, bạn sẽ không có khả năng mã hóa các thông tin thành các bit. Cho dù bạn muốn như vậy.
Ngón cái chỉ lên hay chỉ xuống là một bit thông tin. Và hai ngón cái chỉ lên hoặc chỉ xuống - như là các ngón cái của các nhà phê bình phim Roger Ebert và sau này là Gene Siskel khi họ đưa ra các nhận định cuối cùng về các bộ phim mới nhất - truyền đi hai bit thông tin. (Chúng ta sẽ bỏ qua những gì họ thực sự nói về các bộ phim; những gì chúng ta quan tâm ở đây là các ngón cái của họ). Ở đây ta có bốn khả năng có thể đại diện bởi một nhóm các bit:
00 = Bọn họ đều ghét nó.
01 = Siskel ghét nó; Ebert thích nó.
10 = Siskel thích nó; Ebert ghét nó.
11 = Bọn họ đều thích nó.
01 = Siskel ghét nó; Ebert thích nó.
10 = Siskel thích nó; Ebert ghét nó.
11 = Bọn họ đều thích nó.
Bit đầu tiên là bit Siskel, là 0 nếu Siskel ghét bộ phim và là 1 nếu ông ta thích nó. Tương tự, bit thứ hai là bit Ebert.
Thế nên nếu cậu bạn của bạn có hỏi, "Siskel và Ebert nhận xét gì về bộ phim Impolite Encounter?" thay vì trả lời, "Siskel cho nó ngón cái chỉ lên và Ebert cho nó ngón cái chỉ xuống" hay thậm chí "Siskel thích nó Ebert thì không" bạn có thể đơn giản chỉ nói" Một không". Chỉ khi nào bạn của bạn biết cái nào là bit Siskel và cái nào là bit Ebert, và bit 1 nghĩa là thích bit 0 nghĩa là không thích, thì câu trả lời của bạn mới hoàn toàn dễ hiểu. Nhưng bạn và cậu bạn phải biết về mã.
Ta có thể khai báo trước rằng bit 1 mang nghĩa là không thích và bit 0 có nghĩa là thích. Điều đó có vẻ như là ngược đời. Lẽ thường, chúng ta thích nghĩ về 1 như là đại diện cho thứ gì đó có vẻ khẳng định và ngược lại cho 0, nhưng nó chỉ là một phép gán tùy hứng thôi. Yêu cầu duy nhất là mọi người dùng mã phải biết các bit 1 và 0 mang nghĩa gì.
Ý nghĩa của một bit cụ thể hay một nhóm các bit luôn luôn được hiểu theo ngữ cảnh. Ý nghĩa của dải ruy-băng vàng quấn quanh một cây sồi cụ thể có thể chỉ được biết với một người đã đặt nó ở đó và người được cho là sẽ thấy nó. Thay đổi màu sắc, cây hay ngày và chiếc khăn sẽ chỉ là một miếng vải vô nghĩa. Tương tự, để có một vài thông tin hữu ích từ cử chỉ của Siskel và Ebert, ít nhất chúng ta cần biết bộ phim nào được bàn luận.
Nếu bạn duy trì một danh sách các bộ phim mà Siskel và Ebert đã nhận xét và cách mà họ bình chọn với các ngọn cái của họ, bạn có thể thêm một bit khác để trộn thêm ý kiến của chính mình. Thêm một bit thứ ba làm tăng con số các khả năng khác nhau lên tám:
000 = Siskel ghét nó; Ebert ghét nó; Tôi ghét nó.
001 = Siskel ghét nó; Ebert ghét nó; Tôi thích nó.
010 = Siskel ghét nó; Ebert thích nó; Tôi ghét nó.
011 = Siskel ghét nó; Ebert thích nó; Tôi thích nó.
100 = Siskel thích nó; Ebert ghét nó; Tôi ghét nó.
101 = Siskel thích nó; Ebert ghét nó; Tôi thích nó.
110 = Siskel thích nó; Ebert thích nó; Tôi ghét nó.
111 = Siskel thích nó; Ebert thích nó; Tôi thích nó.
001 = Siskel ghét nó; Ebert ghét nó; Tôi thích nó.
010 = Siskel ghét nó; Ebert thích nó; Tôi ghét nó.
011 = Siskel ghét nó; Ebert thích nó; Tôi thích nó.
100 = Siskel thích nó; Ebert ghét nó; Tôi ghét nó.
101 = Siskel thích nó; Ebert ghét nó; Tôi thích nó.
110 = Siskel thích nó; Ebert thích nó; Tôi ghét nó.
111 = Siskel thích nó; Ebert thích nó; Tôi thích nó.
Một điểm cộng của việc dùng các bit đại diện cho thông tin này là chúng ta biết rằng chúng ta tính được các khả năng có thể có. Chúng ta biết có thể có tám và chỉ tám khả năng và không thêm bớt gì cả. Với 3 bit, chúng ta chỉ có thể đếm từ không tới bảy. Không có thêm các số nhị phân 3 chữ số nào nữa cả.
Nào, trong suốt bảng mô tả về các bit của Siskel và Ebert, bạn có thể sẽ đặt một câu hỏi rất nghiêm trọng và đáng ngại, và câu hỏi đó là: Chúng ta làm gì với Leonard Maltin's Movie & Video Guide? Sau cùng, Leonard Maltin không đưa ngón cái lên hay xuống. Leonard Maltin xếp hạng các cuốn phim bằng việc dùng hệ thống ngôi sao truyền thống hơn.
Để xác định bao nhiêu bit mà Maltin cần, chúng ta trước hết phải biết một ít về hệ thống của ông. Maltin cho một cuộn phim bất kì từ 1 tới 4 sao, với nửa sao ở giữa. (Để làm nó thú vị hơn, ông thật ra không chấm một sao; thay vào đó cuốn phim được xếp hạng là BOMB.) Có bảy khả năng, điều đó có nghĩa là ta có thể đại diện một mức xếp loại bằng việc dùng chỉ 3 bit:
000 = BOMB
001 = *1/2
010 = **
011 = **1/2
100 = ***
101 = ***1/2
110 = ****
001 = *1/2
010 = **
011 = **1/2
100 = ***
101 = ***1/2
110 = ****
"Còn 111 thì sao?" bạn có thể sẽ hỏi vậy. Chà, mã này chẳng có nghĩa gì cả. Nó không được định nghĩa. Nếu mã nhị phân 111 được dùng để đại diện cho xếp hạng của Maltin, bạn sẽ biết rằng đó là một lỗi. (Có lẽ là máy tính gây ra lỗi chứ con người có bao giờ có lỗi đâu.)
Bạn sẽ nhớ lại rằng khi chúng ta có hai bit đại diện cho xếp hạng Siskel và Ebert, bit bên trái là bit Siskel và bit bên phải là bit Ebert. Các bit riêng lẽ có phải mang một nghĩa nào đó ở đây không? Chà, cũng phần nào đấy. Nếu bạn lấy giá trị của mã bit, cộng thêm 2 và chia cho 2, nó sẽ cho bạn số lượng các sao. Nhưng đó chỉ là vì chúng ta định nghĩa các mã theo một cách hợp lý và có quy tắc. Chúng ta cũng có thể định nghĩa các mã theo cách này:
000 = ***
001 = *1/2
010 = **1/2
011 = ****
101 = ***1/2
110 = **
111 = BOMB
001 = *1/2
010 = **1/2
011 = ****
101 = ***1/2
110 = **
111 = BOMB
Mã này cũng hợp lý như mã trên chừng nào mọi người đều biết ý nghĩa của nó.
Nếu Maltin có bắt gặp một bộ phim nào còn tệ hơn mức một sao, ông ta có thể cho nó nửa sao. Ông chắc chắn sẽ có đủ mã cho lựa chọn nửa sao. Mã có thể được định nghĩa như sau:
000 = MAJOR BOMB
001 = BOMB
010 = *1/2
011 = **
100 = **1/2
101 = ***
110 = ***1/2
111 = ****
001 = BOMB
010 = *1/2
011 = **
100 = **1/2
101 = ***
110 = ***1/2
111 = ****
Nhưng nếu sau đó ông còn gặp thêm một bộ phim còn chả đáng được nửa sao và quyết định cho nó không sao (ATOMIC BOMB?), ông cần thêm một bit khác nữa. Hết mã 3-bit để mà dùng rồi.
Tạp chí Entertainment Weekly cho theo thứ bậc, không chỉ cho các cuốn phim mà còn cho các chương trình truyền hình, đĩa CD, sách, CD-ROM, các trang web, và nhiều thứ khác nữa. Khoảng thứ bậc từ A+ trở xuống F (mặc dù có vẻ như chỉ có các cuốn phim của Pauly Shore mới đáng nhận vinh dự này). Nếu bạn đếm chúng, bạn thấy rằng có 13 thứ bậc khả thi. Chúng ta sẽ cần 4 bit để đại diện cho các bậc này:
0000 = F
0001 = D-
0010 = D
0011 = D+
0100 = C-
0101 = C
0110 = C+
0111 = B-
1000 = B
1001 = B+
1010 = A-
1011 = A
1100 = A+
0001 = D-
0010 = D
0011 = D+
0100 = C-
0101 = C
0110 = C+
0111 = B-
1000 = B
1001 = B+
1010 = A-
1011 = A
1100 = A+
Chúng ta còn ba mã chưa được dùng: 1101, 1110 và 1111, cho tổng cộng 16 mã.
Cứ khi nào ta nói về các bit, chúng ta thường nói về một số bit cụ thể. Ta càng có nhiều bit, thì chúng ta càng có thể truyền tải được một lượng lớn hơn các trường hợp.
Cũng tương tự với hệ thập phân, tất nhiên rồi. Ví dụ, có bao nhiêu mã vùng điện thoại? Mã vùng là con số có ba chữ số thập phân, và nếu tất cả chúng đều được dùng (mà thật ra là không, nhưng ta cứ cho qua đi), thì có 10^3, hay 1000 mã, từ 000 tới 999. Có bao nhiêu số điện thoại 7 chữ số có thể có với mã vùng 212? Đó là 10^7, hay 10.000.000. Có bao nhiêu số điện thoại mà bạn có thể có được với mã vùng 212 và đầu số 260? Đó là 10^4, hay 10.000.
Tương tự như vậy, trong hệ nhị phân số các mã khả thi thì luôn luôn bằng với 2 lũy thừa số lượng các bit:
Số bit Số mã
1 2^1 = 2
2 2^2 = 4
3 2^3 = 8
4 2^4 = 16
5 2^5 = 32
6 2^6 = 64
7 2^7 = 128
8 2^8 = 256
9 2^9 = 512
10 2^10 = 1024
1 2^1 = 2
2 2^2 = 4
3 2^3 = 8
4 2^4 = 16
5 2^5 = 32
6 2^6 = 64
7 2^7 = 128
8 2^8 = 256
9 2^9 = 512
10 2^10 = 1024
Cứ thêm một bit thì sẽ có gấp đôi mã.
Nếu bạn biết bạn cần phải có một lượng mã cụ thể, thì bạn sẽ phải tính số bit cần dùng như thế nào? Hay nói cách khác, làm sao để bạn làm ngược lại với bảng trên?
Phương pháp bạn dùng sẽ là logarit cơ số 2. Phép logarit đi ngược lại với phép lũy thừa. Chúng ta biết rằng 2 lũy thừa 7 bằng 128. Và log cơ số 2 của 128 thì bằng 7. Để dùng ký hiệu toán học thì ta có:
2^7 = 128
tương đương với
log(2)128 = 7
Vậy nếu log cơ số 2 của 128 bằng 7 và log cơ số 2 của 256 bằng 8, thì log cơ số 2 của 200 là bao nhiêu? Thật ra là vào khoảng 7,64, nhưng chúng ta thực sự không cần phải biết điều này. Nếu chúng ta cần đại diện 200 thứ khác nhau bằng các bit thì ta sẽ cần 8 bit.
Các bit thường được che dấu trước các quan sát thông thường ẩn sâu trong các dụng cụ điện. Chúng ta không thể thấy các bit được mã hóa trong các đĩa cứng hay trong các đồng hồ điện tử hay trong máy tính. Nhưng đôi khi các bit lại để lộ rõ ràng cho những cặp mắt trần tục.
Dưới đây là một ví dụ. Nếu bạn sở hữu cuộn phim 35-milimet, thì hãy nhìn vào cuộn phim xem. Giữ nó như thế này:
Bạn sẽ thấy một lưới như bàn cờ với các ô vuông bạc và đen mà tôi đã đánh số từ 1 tới 12 như trong sơ đồ. Cái này được gọi là DX-encoding. 12 ô vuông này thực tế là 12 bit. Một ô vuông bạc nghĩa là bit 1 và ô vuông đen là bit 0. Ô 1 và ô 7 luôn luôn là bạc (1).
Các bit này ẩn chứa ý nghĩa gì bên trong chúng? bạn có thể nhận thấy một vài cuộn film nhạy với ánh sáng hơn các cuộn khác. Tính nhạy sáng thì thường được gọi là tốc độ (speed) phim. Một cuốn phim mà rất nhạy với ánh sáng được nói là nhanh (fast) bởi vì chúng có thể được phơi sáng rất nhanh. Tốc độ của cuộn phim được biểu thị bởi xếp hạng ASA (American Standards Association), phổ biến nhất là 100, 200 và 400. Xếp hạng ASA này không chỉ được in trên vỏ hộp và cát-xét mà còn được mã hóa thành các bit.
Có 24 xếp hạng ASA tiêu chuẩn cho phim ảnh. Chúng đây:
Có bao nhiêu bit được yêu cầu để mã hóa thành xếp hạng ASA? Câu trả lời là 5. Chúng ta biết rằng 2^4 bằng 16, vậy nên sẽ ít quá. Nhưng 2^5 bằng 322, lại hợp lý hơn.
Các bit tương ứng với tốc độ phim được bày ra trong bảng sau:
Đa phần các máy ảnh hiện đại 35-miimet dùng các mã này. (Ngoại trừ các máy ảnh mà trên đó bạn phải cài đặt độ phơi sáng bằng tay và các máy ảnh có máy đo ánh sáng sẵn nhưng yêu cầu bạn thiết lập tốc độ phim bằng tay.) Nếu bạn nhìn vào bên trong máy ảnh nơi đặt các cuộn phim, bạn sẽ thấy sáu chỗ tiếp xúc bằng kim loại tương ứng với các ô vuông từ 1 tới 6 trên hộp phim. Các ô bạc thực tế là các cát-xét phim kim loại, đóng vai trò là chất dẫn. Các ô đen là thuốc màu, đóng vai trò là chất cách điện.
Mạch điện trong máy ảnh chạy một dòng điện qua ô vuông 1, cái luôn là bạc. Dòng điện này sẽ bị lấy đi (hoặc không) bởi năm điểm tiếp xúc trên ô 2 tới ô 6, phụ thuộc vào việc các ô vuông được tráng bạc hay được phết màu lên. Do đó, nếu máy ảnh có một dòng điện đi qua ô 4 và 5 mà không qua 2, 3 và 6 cuốn phim sẽ là 400 ASA. Máy ảnh có thể điều chỉnh độ phơi sáng của cuốn phim sao cho phù hợp.
Các máy ảnh không đắt lắm chỉ cần phải đọc ô 2 và 3 và giả định rằng tốc độ phim là 50, 100, 200 hay 400 ASA.
Đa số các máy ảnh không đọc hay dùng các ô từ 8 tới 12. Các ô 8, 9 và 10 mã hóa con số phơi sáng trên cuộn phim, và các ô 11 và 12 ám chỉ tới miền phơi sáng, dựa trên việc cuộn phim dành cho các bản in trắng đen, cho in màu hay cho các trình chiếu màu.
Có lẽ sự hiển thị rõ ràng phổ biến nhất của các con số nhị phân là Universal Product Code (UPC) được dùng rộng rãi, ký tự dải mã nhỏ xíu xuất hiện trên mỗi bao bì sản phẩm chúng ta mua hằng ngày. UPC đến để biểu tượng hóa một trong các cách mà máy tính đã xâm nhập vào đời sống chúng ta.
Mặc dù UPC thường gây ra những cơn hoang tưởng, nó thật ra là một thứ nhỏ bé ngây thơ, được phát minh cho mục đích quét hàng tự động và kiểm kê, mà nó thực hiện khá thành công. Khi được dùng với một hệ thống quét mã được thiết kế tốt, khách hàng có thể có một hóa đơn mua hàng, mà không thể có với các máy tính tiền thông thường.
Điều thú vị với chúng ta ở đây là UPC là mã nhị phân, mặc dù mới nhìn vào thì không giống lắm. Thế nên ta cần phải học để giải mã UPC và kiểm tra cách hoạt động của nó.
Trong hầu hết các dạng thông thường, UPC là một tập hợp của 30 sọc đen thẳng đứng với nhiều kích cỡ bề rộng, được chia tách bởi các khoảng trống có bề rộng khác nhau, kèm theo vài con số. Ví dụ, đây là UPC xuất hiện trên lon Campell's Chicken Noodle Soup 10 3/4-ounce:
Chúng ta sẽ thử cố dịch rõ ràng UPC theo các khái niệm vạch ốm và vạch đen, khoảng trống hẹp và rộng, và thật ra đó là một cách để xem xét nó. Vạch đen trong UPC có thể có bốn bề rộng khác nhau, với vạch dày hơn là hai, ba hay 4 lần bề rộng của vạch mỏng nhất. Tương tự, khoảng rộng hơn giữa các vạch là hai, ba hay bốn lần bề rộng của khoảng ngắn nhất.
Thế nhưng vẫn còn một cách khác để nhìn nhận UPC là xem chúng như một dãy các bit. Nhớ trong đầu là hết cả cái ký hiệu mã dạng vạch này không chính xác là những gì mà đũa quét "nhìn thấy" tại quầy thanh toán. Chiếc đũa phép không cố để dịch các con số ở dưới đáy, ví dụ, bởi vì sẽ cần phải có một công nghệ máy tính tinh vi hơn được biết tới là máy nhận dạng các ký tự quang học (optical character recognition), hay OCR. Thay vào đó, máy quét nhìn thấy chỉ là một lát cắt mỏng của cả khối này. UPC to cỡ đó là để nhân viên thanh toán dễ đưa vào máy quét hơn, bởi vì nó to mà. Lát cắt mà máy quét nhìn thấy có thể được biểu thị như thế này:
Trông gần giống với mã Morse, phải không?
Khi máy tính quét thông tin này từ trái qua phải, nó gán bit 1 cho vạch đen đầu tiên nó gặp, bit 0 cho khoảng trống tiếp theo. Chuỗi các khoảng trống và vạch được đọc như là một dãy các bit 1, 2, 3 hay 4 trong một hàng, dựa trên chiều rộng của khoảng trống hay vạch. Các bit tương ứng với mã vạch được quét thành trông khá đơn giản:
Cho nên cả đoạn mã vạch UPC đơn giản chỉ là một chuỗi 95 bit mà thôi. Trong ví dụ cụ thể này, các bit có thể được nhóm lại như sau:
3 bit đầu luôn luôn là 101. Đây được gọi là mẫu hình bảo vệ cánh trái, và nó cho phép thiết bị quét vi tính có thể nhắm đúng được đối tượng. Từ mẫu bảo vệ, máy quét có thể xác định độ dài mã các vạch và khoảng trống mà chúng tương ứng với một bit riêng lẻ. Trái lại, mã UPC phải là một cỡ cụ thể trên tất cả các gói hàng.
Mẫu hình bảo vệ cánh trái được theo sau bởi sáu nhóm các 7 bit. Mỗi chúng là một mã cho một con số từ 0 tới 9, như tôi vừa mới thử trước đó. Một mẫu hình bảo vệ trung tâm 5-bit đi theo sau. Sự xuất hiện của mẫu cố định này (luôn là 01010) là một dạng kiểm tra lỗi đi kèm. Nếu máy quét vi tính không tìm thấy mã bảo vệ trung tâm nơi mà lẽ ra sẽ có, nó sẽ không chấp nhận mã này là mã UPC. Mẫu hình bảo vệ trung tâm này là một trong một vài các đề phòng cho mã giả mạo hay được in quá tệ.
Mẫu hình bảo vệ trung tâm được theo sau bởi sáu nhóm mỗi 7 bit, mà tiếp sau nó là một mẫu hình bảo vệ cánh phải, luôn luôn là 101. Như tôi sẽ giải thích kỹ hơn, sự hiện diện của mẫu hình bảo vệ tại khúc cuối cho phép mã UPC được quét ngược (có nghĩa là, từ phải qua trái) cũng như xuôi.
Vậy nên toàn bộ UPC được mã hóa thành 12 số. Bên trái UPC mã hóa 6 số, mỗi con yêu cầu 7 bit. Bạn có thể dùng bảng sau để mã hóa những bit này:
Để ý là mỗi mã 7-bit bắt đầu với một số 0 và kết thúc với một số 1. Nếu máy quét gặp một mã 7-bit bên trái mà bắt đầu bằng 1 hay kết thúc bằng 0, thì nó biết rẳng có thể là nó đã không đọc đúng mã UPC hoặc mã đã bị làm giả. Cũng nên để ý là mỗi mã chỉ có hai nhóm bit 1 liên tiếp. Điều này ngầm hiểu là mỗi con số tương ứng với 2 vạch dọc trong mã UPC.
Bạn sẽ nhận thấy rằng mỗi mã trong bảng này có một số lẻ các bit 1. Đây là một dạng kiểm lỗi và tính thống nhất khác được biết là parity (tính chẵn lẻ). Một nhóm các bit có tính chẵn nếu nó có một số chẵn các bit 1 và tính lẻ nếu nó có một số lẻ các bit 1. Do đó, tất cả các mã này có tính lẻ.
Để lý giải sáu mã 7-bit bên phải mã UPC, dùng bảng sau:
Các mã này là các phần bổ túc cho các mã trước đó: cứ nơi nào 0 xuất hiện thì nay thành 1, và ngược lại. Các mã này luôn luôn bắt đầu với một con 1 và kết thúc với 1 con 0. Thêm nữa, chúng có một số chẵn các bit 1, nên sẽ có tính chẵn.
Nào giờ thì chúng ta đã được trang bị để có thể giải mã UPC. Dùng hai cái bảng vừa rồi, chúng ta có thể xác minh là 12 con sỗ được mã hóa trong lon Cambell's Chicken Noodle Soup 10 3/4-ounce là
0 51000 01251 7
Thật thất vọng. Như bạn có thể thấy, các số này giống y đúc các số được in ngay ngắn bên dưới UPC. (Điều này rất có ý nghĩa nếu máy quét không thể đọc được mã vì lý do nào đó, thì nhân viên thu ngân có thể nhập số vào bằng tay. Thật sự thì chắc chắn bạn đã gặp cảnh này rồi.) Chúng ta không phải đi qua hết công việc giải mã chúng, and hơn nữa, chúng ta vẫn chưa đến gần với việc giải mã bất cứ thông tin bí mật nào. Thế nhưng cũng chẳng còn gì trong UPC để mà giải mã cả. 30 đường dọc ấy phân ra thành 12 con số.
Con số đầu tiên (0 trong trường hợp này) được biết đến là ký tự hệ số (number system character). Một số 0 có thể hiểu đây là một mã UPC thông thường. Nếu UPC xuất hiện trên các món đồ tạp hóa trọng-lượng-bất-kỳ như là thịt hay vật dụng, mã sẽ là 2. Mã giảm giá có mã là 5.
Năm con số kế tiếp làm thành mã nhà sản xuất. Trong trường hợp này, 51000 là mã cho công ty Campbell Soup. Tất cả các sản phẩm của Campbell có mã này. Năm con số theo sau (01251) là mã cho một sản phẩm cụ thể của công ty, trong trường hợp này, là mã cho một lon súp mì gà 10 3/4-ounce. Mã sản phẩm này có ý nghĩa chỉ khi được kết hợp với mã nhà sản xuất. Một công ty súp mì gà khác có một mã sản phẩm khác và một mã sản phẩm 01251 có thể mang nghĩa gì đó hoàn toàn khác khi đi với nhà sản xuất khác.
Ngược lại với niềm tin phổ biến, UPC không kèm theo cả giá sản phẩm. Thông tin này có được là từ máy tính cửa hàng sử dụng liên kết với máy quét.
Con số cuối cùng (7 trong trường hợp này) được gọi là kí tự kiểm tra đồng dư (modulo check character). Kí tự này cho phép một dạng kiểm lỗi khác. Để xem xét cách nó làm việc, ta hãy gán mỗi 11 số đầu tiên (0 51000 01251 trong ví dụ của chúng ta) cho một chữ cái:
A BCDEF GHIJK
Giờ hãy tính vế sau:
3 x (A + C + E + G + I + K) + (B + D + F + H + J)
và lấy bội lớn nhất kề nó của 10 trừ đi. Đó được gọi là kí tự kiểm tra đồng dư modulo. Trong trường hợp Súp mì gà Campbell, ta có
3 x ( 0 + 1 + 0 + 0 + 2 + 1) + (5 + 0 + 0 + 1 + 5) = 3 x 4 + 11 = 23
Bội lớn nhất của 10 liền kề là 30, vậy nên
30 - 23 = 7 và đó là kí tự kiểm tra đồng dư modulo được in và mã hóa trong UPC. Đây là một dạng dư. Nếu máy tính điều khiển máy quét không tính ra được kí tự kiểm tra đồng dư giống cái được mã hóa trong UPC, máy tính sẽ không chấp nhận UPC hợp lệ.
Thông thường, chỉ 4 bit cần để xác định một số thập phân từ 0 tới 9. UPC dùng 7 bit cho 1 số. Tổng quan, UPC dùng 95 bit để mã hóa chỉ 11 con số thập phân hữu dụng. Thật ra UPC bao gồm khoảng trắng (tương đương với 9 bit 0) ở cả bên trái và phải của mẫu hình bảo vệ. Điều đó có nghĩa là hết cả UPC yêu cầu 113 bit để mã hóa 11 số thập phân, hay trên 10 bit cho một số!
UPC cũng có lợi bởi khả năng cho phép đọc ở cả hai hướng. Nếu các con số đầu tiên mà máy quét giải mã có tính chẵn (có nghĩa là, số lượng các bit 1 trong mỗi mã 7-bit là chẵn), thì máy quét biết rằng nó đang dịch mã UPC từ phải qua. Tiếp theo hệ thống máy tính dùng bảng này để giải mã các con số mặt-bên-phải:
Bảng phòng trữ cho các mã mặt-bên-phải
0100111 = 0 0111001 = 5
0110011 = 1 0000101 = 6
0011011 = 2 0010001 = 7
0100001 = 3 0001001 = 8
0011101 = 4 0010111 = 9
0100111 = 0 0111001 = 5
0110011 = 1 0000101 = 6
0011011 = 2 0010001 = 7
0100001 = 3 0001001 = 8
0011101 = 4 0010111 = 9
và bảng này cho các con số mặt-bên-trái:
Bảng phòng trữ cho các mã mặt-bên-trái
1011000 = 0 1000110 = 5
1001100 = 1 1111010 = 6
1100100 = 2 1101110 = 7
1011110 = 3 1110110 = 8
1100010 = 4 1101000 = 9
1011000 = 0 1000110 = 5
1001100 = 1 1111010 = 6
1100100 = 2 1101110 = 7
1011110 = 3 1110110 = 8
1100010 = 4 1101000 = 9
Các mã 7-bit này khác hoàn toàn với các mã đọc được khi UPC được quét từ trái qua. Không có sự mập mờ nào cả.
Ta bắt đầu tìm hiểu về code trong sách này với mã Morse, tập hợp của chấm và gạch, và các khoảng dừng giữa chúng. Mã Morse không có vẻ như liền ngay lập tức tương đương với các không và một, nhưng thực tế không phải vậy.
Nhớ lại các quy luật của mã Morse: Một gạch dài gấp ba lần một chấm. Chấm và gạch của một chữ cái đơn được phân chia bởi một khoảng nghỉ có độ dài của một chấm. Các chữ cái nằm trong một chữ được chia bởi những khoảng nghỉ có độ dài của một gạch. Các chữ được chia bởi khoảng nghỉ bằng với độ dài của hai gạch.
Nhằm đơn giản phép phân tích này đi một chút, hãy giả sử rằng một gạch dài gấp hai lần một chấm chứ không còn là ba nữa. Có nghĩa là một chấm có thể là một bit 1 và một gạch có thể là hai bit 1. Khoảng nghỉ giờ là các bit 0.
Dưới đây là bảng cơ bản của mã Morse từ Chương 2:
Còn đây là bản đã được chuyển sang thành các bit:
Để ý tất cả mọi mã bắt đầu với một bit 1 và kết thúc với một cặp bit 0. Cặp bit 0 đại diện cho khoảng nghỉ giữa các chữ cái trong cùng một chữ. Mã cho dấu cách giữa các chữ là một cặp bit 0 khác. Do đó mã Morse cho "hi there" thường được cho như
nhưng với mã Morse dùng các bit có thể trông như phần cắt ngang của mã UPC:
Nếu theo cách dùng các bit, mã Braille sẽ dễ hơn nhiều so với mã Morse. Braille là một mã 6-bit. Mỗi ký tự được đại diện bởi một mảng sáu chấm, và mỗi chấm trong sáu chấm đó có thể hoặc được dập nổi hoặc không. Như tôi đã giải thích ở Chương 3, chấm thông thường được đánh số từ 1 tới 6:
Từ "code" (ví dụ) được đại diện bởi những ký hiệu Braille:
Nếu chấm nổi là 1 và chấm phẳng là 0, thì mỗi ký tự trong Braille có thể được đại diện bởi một số nhị phân 6-bit. Bốn ký hiệu Braille cho những chữ cái trong chữ "code" giờ đơn giản chỉ là:
100100 101010 100110 100010
với bit đầu tiên bên trái tương ứng với vị trí số 1 trong lưới vuông, và bit ngoài cùng bên phải tương ứng với vị trí số 6.
Như ta sẽ thấy sau trong cuốn sách, các bit có thể đại diện cho chữ, ảnh, âm thanh, nhạc, và phim cũng như các mã sản phẩm, tốc độ phim, xếp hạng phim, một cuộc xâm lược của quân đội Anh, và tâm ý của người ta yêu dấu. Nhưng cơ bản nhất, bit là số. Toàn bộ những gì cần phải làm khi bit đại diện cho thông tin khác là đếm số các trường hợp có thể có. Điều này giúp xác định được số bit cần thiết để cho mỗi khả năng có thể được gán cho một số.
Bit cũng đặt một chân vào logic, một mục đích cơ bản cho sự pha trộn kì lạ này giữa triết học và toán học đó là xác minh xem liệu các mệnh đề xác định là đúng hay sai. Đúng và sai cũng có thể là 1 và 0.
Khoa học - Công nghệ
/khoa-hoc-cong-nghe
Bài viết nổi bật khác
- Hot nhất
- Mới nhất