Mã hiệu

Trong truyền thông liên lạc, một **mã hiệu** - hay còn gọi là **mã số** hoặc chỉ đơn thuần là **mã** - là một công thức để biến đổi một mẩu thông tin (chẳng hạn, một ký tự, một từ, hoặc một thành ngữ) sang một hình thức hoặc một tượng trưng khác, không nhất thiết đồng dạng với mẩu thông tin gốc. Trong truyền thông liên lạc và trong công nghệ xử lý thông tin (*information processing*), **mã hóa** (*encoding*) là một quá trình một nguồn (*source*) (đối tượng) biến đổi thông tin thành dữ liệu, sau đó truyền gửi dữ liệu tới một máy thu (*observer*), tương tự như một hệ thống xử lý dữ liệu. **Giải mã** (*decoding*) là một quá trình biến đổi dữ liệu ngược lại. Nó biến đổi các dữ liệu được một nguồn gửi đến thành các thông tin mà máy thu (hoặc người nhận) có thể hiểu được. (Xin xem thêm Các phương pháp giải mã). *[[Codec]]* là một phần mềm thực hiện công thức (hoặc thuật toán) để giải quyết cả hai chức năng, mã hóa và giải mã, chẳng hạn MP3 là một *codec* mà người ta có thể thực hiện trong phần cứng hay trong phần mềm. Nó còn có thể bao gồm cả chức năng nén dữ liệu nữa.

Một trong những nguyên nhân mã hóa được dùng là nó cho phép người ta giao thông liên lạc tại những nơi mà ngôn ngữ viết và nói thông thường trở nên khó khăn hoặc hoàn toàn không dùng được. Chẳng hạn, một mã điện tín thay thế các chữ (ví dụ: *tàu* hoặc *hóa đơn*) thành những chữ ngắn hơn, cho phép nguyên văn bản thông tin được truyền gửi với số ký tự ít hơn, truyền được tin nhanh hơn, và quan trọng hơn cả, rẻ tiền hơn. Một ví dụ khác nữa là ví dụ dùng tín hiệu cờ. Sự bố trí của các lá cờ, do người đánh tín hiệu cầm, hoặc do các cánh tay của một đài tín hiệu cờ giữ, được dùng để mã hóa từng phần của thông điệp mà người ta muốn gửi. Mỗi cách bố trí là dấu hiệu của một chữ, hoặc của một con số. Một người khác, đứng ở một nơi xa, thông dịch các tín hiệu cờ và tái tạo lại các chữ đã gửi.

Trong lịch sử mật mã học, một thời, cách dùng mã hiệu để đảm bảo tính tin cẩn (*confidentiality*) trong truyền thông liên lạc đã trở thành thông dụng, song hiện nay, người ta dùng mật mã (*cipher*) thay thế. (Xem thêm bài mã hiệu (mật mã học)).

## Tính vắn tắt của mã hiệu khi được dùng trong giao thông liên lạc
Mã hiệu có thể được dùng để làm vắn tắt thông điệp. Khi thông điệp điện báo (*telegraph messages*) đã trở thành đỉnh cao của kỹ thuật (*state of the art*) trong việc truyền thông liên lạc nhanh chóng giữa những địa điểm cách nhau xa, các mã hiệu thương mại phức tạp có thể mã hóa một tổ hợp từ (thành ngữ) thành chỉ một chữ (thường là những nhóm 5 ký tự) đã được xây dựng, hầu cho các chuyên viên điện báo có thể thuộc lòng và trở nên thông thạo với các "chữ" như *BYOXO* ("Are you trying to weasel out of our deal?" - Có phải ông đang định né tránh cuộc thỏa thuận buôn bán của chúng ta phải không?), *LIOUY* ("Why do you not answer my question?" - Tại sao ông không trả lời câu hỏi của tôi?), *BMULD* ("You're a skunk!" - Mày là một thằng đê tiện!) hay *AYYLU* ("Not clearly coded, repeat more clearly." - Mã hiệu đánh không rõ ràng, đề nghị nhắc lại rõ hơn.). Các từ mã (*code word*) được chọn lọc bởi nhiều lý do khác nhau. Có thể là vì chiều dài, vì khả năng phát âm v.v. Nghĩa của chúng được chọn lọc để phù hợp với những nhu cầu mà người ta nghĩ đến như trong các thương lượng về buôn bán, những thuật ngữ trong luật ngoại giao, bất cứ và tất cả những gì trên đây đối với những quy tắc hoạt động tình báo v.v. Số lượng sổ mật mã và nhà xuất bản sổ mật mã tăng nhanh, kể cả một cơ quan hoạt động như một cái vỏ bên ngoài cho cơ quan Black Chamber của Mỹ, lãnh đạo bởi Herbert Yardley trong thời kỳ giữa Thế chiến thứ nhất và Thế chiến thứ hai. Mục đích của những mã hiệu này là nhằm tiết kiệm phí tổn trên đường dây. Việc mã hóa dùng trong công nghệ nén dữ liệu đã có từ trước thời kỳ của máy tính; một ví dụ trước đây là mã Morse điện báo, trong đó những chữ thường dùng được viết ngắn lại. Những kỹ thuật như Mã hóa Huffman hiện được dùng trong những thuật toán vi tính để nén những tập tin có số lượng dữ liệu lớn, thành những cái có hình thể gọn nhẹ hơn, để lưu trữ lại hoặc để truyền thông.

## Một ví dụ: bảng mã ASCII
Hiện nay, ASCII có thể được coi là một loại mã dùng trong giao thông liên lạc dữ liệu (còn được gọi là "đại diện ký tự", hay chỉ đơn thuần "ký hiệu") phổ biến nhất. Hoặc trong phiên bản này hoặc trong phiên bản khác (phần nào tương thích), bảng mã ASCII hiện được dùng trong hầu hết các máy tính cá nhân (PC), các thiết bị đầu cuối, các máy in, và các thiết bị giao thông liên lạc khác. Phiên bản gốc của ASCII chỉ bao gồm 128 ký tự dùng 7 bit nhị phân&mdash;có nghĩa là dùng một chuỗi 7 ký tự bao gồm các số 1 và 0 mà thôi. Trong bảng mã ASCII, chữ "a" thường lúc nào cũng có giá trị là 1100001, và chữ "A" hoa luôn luôn có giá trị là 1000001, vân vân. Các bản kế thừa sau này của ASCII bao gồm bản dùng 8-bit để biểu đạt các ký tự (có cả các ký tự trong các ngôn ngữ của châu Âu, và những ký hiệu khác như các ký hiệu trong bài *tú lơ khơ* (♠,♣,♥,♦)), và sau này bản phát triển trọn vẹn nhất bao gồm tất cả các nét chữ trong các hệ thống chữ viết trên toàn thế giới (Xin xem bài Unicode và bài về Bob Bemer).

## Các mã số dùng để phát hiện và sửa lỗi (như trong lưu trữ dữ liệu và trong truyền thông)
Các mã số (hay mã hiệu) cũng còn được dùng để đại diện cho dữ liệu, dưới một hình thức tốt hơn để giúp vào việc chống các lỗi lầm xảy ra trong khi truyền thông hay trong việc lưu trữ dữ liệu. Loại "mã" này được gọi là mã sửa lỗi (*error-correcting code*), và nó làm việc bằng cách cho thêm những giá trị thừa đã được tính toán một cách khôn khéo vào trong dữ liệu lưu trữ (hay dữ liệu được truyền thông). Ví dụ như:
*Mã Hamming
*Mã Reed-Solomon
*Mã Reed-Muller
*Mã của ông Bose-Chaudhuri-Hochquenghem
*Mã Turbo
*Mã Golay
*Mã Goppa
*Mã kiểm tra chẵn lẽ mật độ thấp (*Low-density parity-check code*) của Robert G. Gallager
*Mã phân khoảng thời gian (*space–time code*)

Các mã dùng để sửa lỗi đều được tối ưu hóa để phát hiện chùm lỗi đột phát (*burst errors*) và các lỗi ngẫu nhiên.

## Mã hiệu và các từ bằng chữ đầu
Các từ bằng chữ đầu (*Acronyms*) và các từ viết tắt cũng có thể được coi là các mã hiệu, hay nói cách khác, tất cả các ngôn ngữ và hệ thống chữ viết là các mã hiệu của tư duy nhân loại. Thỉnh thoảng người ta thấy một từ mã chiếm lĩnh được quyền tồn tại độc lập (cả về tổ chức của nhóm từ và về ý nghĩa) trong khi câu thành ngữ gốc của nó dần dần bị lãng quên đi, hoặc ở mức độ tối thiểu, câu thành ngữ không còn ý nghĩa chính xác mà mã hiệu tượng trưng nữa. Chẳng hạn con số "86" đã từng một thời là mã hiệu trong các hiệu ăn với nghĩa là "We're out of the requested item" (Món ăn yêu cầu đã hết). Hiện nay, mã hiệu "86" này lại thường được dùng với cái nghĩa là sự tẩy trừ (*removal*) hoặc sự hủy bỏ (*destruction*) của cái gì đó. Số 30 từng được dùng phổ biến trong giới báo chí với cái nghĩa là "end of story" (hết truyện), và đôi khi được dùng trong các ngữ cảnh khác để biểu thị chữ "the end" (Hết).

## Mã Gödel
Trong toán học, mã Gödel là nền tảng cho chứng minh Định lý bất toàn của nhà toán học Kurt Gödel. Mục đích của định lý này là liên kết ký hiệu toán học với một số tự nhiên (số Gödel).

## Ghi chú
# Lỗi ngẫu nhiên là các lỗi xảy ra thất thường, không theo một chu kỳ nhất định.
# Số 86 thường được dùng trong các cửa hàng ăn ám chỉ một món ăn hay một thứ nào đó đã bán hết, song có nguồn tin nói rằng chữ này bắt nguồn từ "brass-pounder short code" - các ký hiệu viết tắt của nhân viên điện báo - với cái nghĩa là "bỏ qua thông điệp đã gửi trước", hay "hủy diệt cái gì đi". Chữ *brass* (đồng thau) được dùng chỉ các thiết bị điện báo được làm bằng đồng thau; chữ *pounder* (người giã, máy giã) chỉ người điều hành các thiết bị điện báo này vì họ thường "giã các thông điệp sang mã Morse" (*pounded out the messages in Morse code*).

## Xem thêm
*Danh sách các thuật ngữ dùng trong ngành mã hóa