Tải bản đầy đủ

Hệ thập lục phân 1234

Hệ thập lục phân


Mục lục
1

2

Hệ thập lục phân

1

1.1

Từ nguyên . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1

1.1.1

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


1

1.2

Biểu thị số thập lục phân . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1

1.3

Ứng dụng

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2

1.4

Phân số

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3

1.5

Hài hước . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3

1.6

Triển khai sang hệ nhị phân . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3

1.7

Đổi gốc từ các hệ số khác


. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4

1.7.1

Phép chia lấy số dư trong cơ số nguồn . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4

1.7.2

Phép cộng và tính nhân trong hệ thập lục phân . . . . . . . . . . . . . . . . . . . . . . .

4

1.7.3

Phép đổi thông qua hệ nhị phân

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4

1.8

Hệ thập lục phân trong con mắt của giới báo chí và phim ảnh . . . . . . . . . . . . . . . . . . .

5

1.9

Xem thêm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5

1.10 am khảo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5

1.11 Liên kết ngoài . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5

Học tăng cường

6

2.1

Các thuật toán . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6

2.2

Nghiên cứu hiện tại . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

7

2.3

am khảo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

7

2.4

Liên kết ngoài . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

8

2.5

Nguồn, người đóng góp, và giấy phép cho văn bản và hình ảnh . . . . . . . . . . . . . . . . . . .

9

2.5.1

Văn bản . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

9

2.5.2

Hình ảnh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

9

2.5.3

Giấy phép nội dung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

9

Anh ngữ

i


Chương 1

Hệ thập lục phân
Trong toán học và trong khoa học điện toán, hệ
thập lục phân (hay hệ đếm cơ số 16, tiếng Anh:
hexadecimal), hoặc chỉ đơn thuần gọi là thập lục, là
một hệ đếm có 16 ký tự, từ 0 đến 9 và A đến F (chữ
hoa và chữ thường như nhau). Hệ thống thập lục phân
hiện dùng, được công ty IBM giới thiệu với thế giới điện
toán vào năm 1963. Một phiên bản cũ của hệ thống này,
dùng các con số từ 0 đến 9, và các con chữ A đến F, đã
được sử dụng trong máy tính Bendix G-15, ra mắt năm
1956.

(computer hackers), có thể bị gợi ý và dẫn dụ bằng từ
này mà gọi tắt nó thành sex. Giáo sư và nhà khoa học
máy tính Donald Knuth có chỉ ra rằng theo đúng nghĩa
của từ thì tên của nó phải là senidenary, một từ gốc
Latinh với nghĩa là “nhóm 16”. Những từ binary (nhị
phân), ternary (tam phân) và quaternary (tứ phân) đều
được tổ hợp từ gốc Latinh cả, và theo đúng nghĩa thì từ
decimal (thập phân) đáng ra phải là denary (hệ mười).
Mấy năm trước đây, một hệ thống các ký tự khác của
hệ thập lục phân, rõ ràng, không nhập nhèm, đã được
đề cử. (Cf. Hexadecimal time)

Ví dụ, số thập phân 79, với biểu thị nhị phân là
01001111, có thể được viết thành 4F trong hệ thập lục
phân (4 = 0100, F = 1111).

1.2 Biểu thị số thập lục phân

Chú ý trong bảng sau: hex = thập lục phân
dec = thập phân

Một vài con số thập lục phân hầu như hoàn toàn giống
với những con số trong hệ thập phân (kể cả đối với con
người và máy vi tính). Vì thế mà chúng thường được
ký hiệu theo một quy tắc nhất định.

oct = bát phân

1.1 Từ nguyên
1.1.1

Dưới dạng in ấn, ký hiệu của hệ thường được chỉ định
bởi một hậu tố, chẳng hạn 5A316 , 5A3SIXTEEN, hoặc
5A3HEX.

Anh ngữ

Trong các ngôn ngữ lập trình cho máy vi tính - hầu như
luôn luôn dùng văn bản đơn thuần (plain text), không
hề có sự phân biệt về chữ viết trên, hoặc chữ viết dưới
như trong in ấn - rất nhiều cách để đánh dấu số hệ thập
lục phân đã xuất hiện. Những cách đánh dấu này còn
được thấy trong chữ in, đặc biệt là những nội dung có
liên quan đến một ngôn ngữ lập trình.

Chính IBM đã lựa chọn tiền tố hexa, thay vì sexa của
tiếng Latinh. Cái tên hexadecimal là một cái tên xa lạ,
vì hexa nguyên có gốc từ hexi (έξι) trong tiếng Hy Lạp
và có nghĩa là “sáu”, còn decimal lại có gốc Latinh và có
nghĩa là “mười”. Có thể hexa cũng đã được lấy từ tiếng
Latinh, song chữ deka của Hy Lạp lại gần với chữ decem
của Latinh hơn, nên có một số ý kiến cho rằng cách
đặt tên này có sự bất nhất nào đấy. Một từ cổ hơn nữa
là sexidecimal nghe có vẻ Latinh nhưng không đúng
(từ Latinh đúng là sedecim, có nghĩa là 16). Từ này đã
được đổi vì một số người cho rằng việc dùng từ này
là quá mạo hiểm, vì từ này còn có một nghĩa khác là
“gốc 60”. Tuy vậy, chữ sexagesimal (gốc 60) vẫn còn
giữ lại được nhóm tiền tố của nó. Trong tài liệu trước
đây của máy tính Bendix, từ sexadecimal cũng có được
dùng đến. Ông Steven Schwartzman có ghi lại: “Vì từ
hexadecimal là một từ tương đối dài, nên nhiều khi nó
được viết tắt là hex". Từ hexadecimal - thập lục phân
- là một từ bất thường, vì nó là từ ghép bởi tiết tố của
hai thứ tiếng Latinh và Hy Lạp. Từ nguyên gốc Latinh
phải là sexadecimal, song những kẻ tấn công máy tính

Một số ký dụng thường thấy trong ngôn ngữ:
• Ada và VHDL gói những số thập lục phân dùng
gốc của hệ, điểm chỉ bằng con số biểu đạt gốc,
chẳng hạn "16#5A3#". (Chú ý: Ada chấp nhận
phương thức ký dụng này cho các hệ, từ nhị phân
cho đến thập lục phân, cho cả hai loại số nguyên
(integer) và số thực (real)).
• C và những ngôn ngữ lập trình có ngữ pháp tương
ứng (như C++, C#, Java và Javascript) dùng tiền tố
“0x” cho các số thập lục phân, chẳng hạn “0x5A3”.
Số không (0) dẫn đầu được dùng để bộ thanh lọc
mã (parser) có thể trực tiếp nhận biết một con số,
1


2

CHƯƠNG 1. HỆ THẬP LỤC PHÂN
trong khi chữ “x” đại biểu cho chữ hexadecimal
(thập lục phân) - (đối chiếu với 0 đại diện cho
bát phân (octal)). Chữ “x” trong tiền tố “0x” có
thể được viết hoa (0X) hoặc viết thường (0x), song
thường thấy được viết thường.

những dòng chữ kiểu chữ đánh máy (typewriter
type), ví dụ: 5A3

• Các shell của *nix (phần mềm dùng để thao tác các
mệnh lệnh với máy tính, trong các hệ điều hành
tương tự như UNIX) dùng mã escape bằng tổ hợp
ký tự "\x0FF” trong các biểu thức (expression), và
dùng “0xFF” đối với các hằng số (constant).
• Trong HTML, những ký hiệu hệ thập lục phân
cũng được biểu thị với cách dùng chữ “x": ֣
sẽ tương đương như ֣ – với trình duyệt
web của bạn và ֣ theo thứ tự; (dấu trong
tiếng Hebrew Hebrew accent munah). Các mã chỉ
định màu sắc dùng hệ thập lục phân thường được
biểu đạt với tiền tố "#", chẳng hạn "#FFFFFF” (màu
trắng).
• Một vài ngôn ngữ assembly chỉ định thập lục phân
bằng cách cho thêm chữ “h” vào đuôi (nếu con số
bắt đầu bằng một chữ, đồng thời đứng sau một con
số 0, chỉ định rằng nó là một con số), chẳng hạn
“0A3Ch”, “5A3h”.






Một bảng cửu chương thập lục phân

Vì không có một quy định thống nhất nào nên tất cả
những quy ước trên đều được dùng, đôi khi, ngay cả
trong cùng một bài viết. Song vì quy ước của chúng
khá rõ ràng và biệt lập nên ít khi có những trắc trở xảy
Postscript chỉ định thập lục phân dùng tiền tố ra.
“16#".
Ký hiệu thường dùng (và thường gặp) nhất là tiền tố
“0x” hoặc ký hiệu viết số 16 xuống dưới (subscriptCommon Lisp dùng tiền tố "#x” hoặc "#16r”.
based), đều chỉ số thập lục phân. Chẳng hạn cả hai số
Pascal, và các assembler khác (AT&T, Motorola), 0x2BAD và 2BAD16 đều cùng đại diện cho số thập phân
và một vài phiên bản BASIC dùng tiền tố "$", 11181 (hoặc 1118110 ).
chẳng hạn "$5A3”.
Trong những thời kỳ đầu của lịch sử máy tính, sự lựa
chọn những con chữ từ A đến F để thay thế cho những
Ngôn ngữ lập trình Smalltalk dùng tiền tố “16r”.
con số tiếp theo, chưa được chấp nhận trên toàn thế
Chú ý Smalltalk còn chấp nhận biểu thức giới. Trong những năm sau 1950, một số công trình cài
số>r - gốc hệ số là một số từ 2
đặt máy tính, ưa lựa chọn cách dùng các số từ 0 đến 5,
trở lên (ví dụ: 2r1110 bằng 10r14 hoặc 16rE), với
cùng với một cơ cấu mã (macron), để biểu thị giá trị từ
sự hạn chế trên thực tiễn vì các ký tự và con số
10 đến 15. Những người dùng máy tính Bendix thì lại
đều nằm trong các ký tự của bộ ASCII, 0-9 và A-Z.
dùng chữ “U” đến chữ “Z”.
Một số phiên bản của Smalltalk cho phép các con
số thập phân đứng sau dấu chấm ".” biểu đạt số
chấm động thập lục phân (floating point number)
1.3 Ứng dụng
(và các gốc hệ số khác nữa).

• Một số phiên bản BASIC, đặc biệt là những ngôn
ngữ là biến thể của nó do Microso tạo ra như
QBasic và Visual Basic, các tiền tố để biểu đạt số
thuộc hệ thập lục phân, như "&H”, ví dụ: "&H5A3";
những cái khác như BBC BASIC chỉ dùng "&"
(được dùng để biểu đạt hệ bát phân (octal) trong
BASIC của Microso).

Hệ thập lục phân được dùng phổ biến trong lập trình
HTML và CSS (tạm dịch là Chương mục định hình tuần
tự). Những lập trình này dùng bộ tam kết thập lục phân
(hex triplet) biểu thị màu sắc trong các trang web, bắt
đầu bằng một dấu "#". Dấu này còn được dùng để biểu
thị các số thập lục phân nửa. Khi biểu thị màu sắc với
24 bit, công thức #RRGGBB ("Đỏ, Vàng, Xanh”) được
dùng
để thể hiện. Trong công thức này, “RR” (tiếng
• Những ký hiệu như X'5A3' cũng đôi khi được thấy;
Anh

“Red Red”) biểu thị phân hợp màu đỏ, “GG”
PL/I dùng ký hiệu như vậy.
(“Green Green”) biểu thị phân hợp màu vàng (đáng ra
• Donald Knuth giới thiệu cách dùng các loại chữ phải gọi là màu xanh lá cây, song gọi là vàng để phân
khác nhau để biểu diễn cơ số của hệ đếm trong biệt với phân hợp tiếp theo, màu xanh lam), và “BB”
sách của ông e TeXbook. Trong hệ thống ký (“Blue Blue”) biểu thị phân hợp màu xanh (lam) của tổ
hiệu của ông, số thập lục phân được biểu đạt bằng hợp tam phần, đại diện cho sắc độ của một màu. Lấy ví


1.6. TRIỂN KHAI SANG HỆ NHỊ PHÂN

3

dụ, một dáng màu đỏ với giá trị thập phân (238, 9, 63)
được mã hóa sang hệ thập lục phân là #EE093F. Công
thức này được sao chép từ tổ chức màu sắc trong hệ
thống cửa sổ X (X Window System).

vào đằng sau một con số để biểu thị con số ấy là một
số thập lục phân. y luật này cũng đôi khi được dùng
trong ngữ pháp của ngôn ngữ lập trình assembly cổ của
Intel. Với đuôi “H”, người ta có thể viết những từ và câu
Hệ thập phân còn được dùng trong kỹ thuật máy tính mới, chẳng hạn 1517ADEADB17CH.
trên nhiều khía cạnh chung chung khác, và là một Một ví dụ nữa là con số ma (magic number) trong các
phương pháp thông thường nhất để biểu đạt giá trị của tiệp của hệ thống phân bổ FAT Mach-O và các chương
một byte, dùng dãy các ký tự (string), mà con người ai trình Java, con số đó là “CAFEBABE” (cô bé quán cà
cũng có thể đọc được. Tất cả các giá trị của một byte phê).
(bao gồm 256 giá trị) đều có thể được biểu thị bằng hệ Cái ngân phiếu của Knuth có giá trị là một đô la trong
thập lục phân. Một số người cho rằng phương pháp hệ thập lục phân (256 xu = 162 ), tức là $2.56.
dùng hệ ASCII 8-bit, để biểu thị giá trị, là một phương
pháp khả thi, song phương pháp này không toàn diện, Bảng liệt kê sau đây chính là một trò đùa với hệ thập
vì hệ ASCII còn bao gồm những ký tự không in được lục phân:
(còn gọi là các ký tự điều khiển (control characters)),
không thích hợp cho mục đích.
3x12=36
2x12=24
Trong các dòng liên kết nối URL, những chữ đặc biệt
có thể được biểu thị bằng cách dùng mã thập lục phân,
1x12=12
dẫn đầu bằng dấu phần trăm (%), chẳng hạn http://vi.
0x12=18
wikipedia.org/wiki/Trang%20Ch%C3%ADnh.
Công thức quy định cách viết địa chỉ IPv6, đại diện mỗi Ba hàng đầu tiên là tích của số 12, trong khi hàng cuối
nhóm số gồm 16 bit, bằng những số thập lục phân, hòng cùng “0x12” trong thập lục phân lại là 18.
làm cho việc đọc, và sao chép các địa chỉ dài 128-bit
Giá trị 0xdeadbeef (“ox dead bee” - trâu chết [thành]
được dễ dàng hơn.
thịt bò) đôi khi được gài vào bộ nhớ chưa được ráp giá
trị khởi đầu (uninitialized memory).

1.4 Phân số
1.6 Triển khai sang hệ nhị phân

Tương tự như các hệ đếm khác, hệ thập lục phân cũng
có thể dùng để biểu thị phân số (vulgar fraction), song
Khi làm việc với máy vi tính, chúng ta thường phải xử
chu kỳ thập phân tái diễn (recurring digits) thường xảy
lý dữ liệu nhị phân, song xử lý con số trong hệ thập lục
ra, do số 16 chỉ có một thừa số nguyên tố:
phân lại dễ dàng hơn so với hệ nhị phân (toàn số chỉ có
Do cơ số 16 là bình phương của 4 (4²), phân số thập lục 0 và 1) rất nhiều. Trong khi chúng ta thông thuộc với
phân có chu kỳ lặp lại cá biệt, xảy ra nhiều lần hơn, so hệ thập phân hơn các hệ cơ số khác, việc biến đổi số
với những số thập phân. Chu kỳ thập phân xảy ra khi từ hệ nhị phân sang hệ thập lục phân lại dễ hơn là việc
mẫu số, với thừa số thấp nhất (denominator in lowest biến chúng sang hệ thập phân, vì mỗi một số thập lục
terms), có một thừa số nguyên tố không thấy ở trong phân tương đương với 4 bit nhị phân (410 ).
hàng cơ số. Trong trường hợp số thập lục phân, tất cả
Hãy thử cân nhắc việc biến đổi số 11112 sang hệ thập
những phân số có mẫu số không phải là tích của một
phân. Vì mỗi vị trí của một con số trong hệ nhị phân
số mũ 2, sẽ tạo nên một chu kỳ thập phân tái diễn.
(cơ số 2) chỉ cho phép giá trị 0 hay 1 mà thôi, việc định
giá trị của con số tại vị trí ấy, tính từ bên phải, là một
việc tương đối dễ dàng:

1.5 Hài hước

Hệ thập lục phân đôi khi được dùng trong các trò đùa
cợt của các lập trình viên, vì một số từ có thể được
tạo dựng bằng các con số thập lục phân. Một số từ
này trong tiếng Anh là “dead” (chết), “bee” (thịt bò),
“babe” (người yêu bé bỏng) và, với những thế tự phù
hợp, từ “c0ffee” (cà phê). Trang này là một ví dụ điển
hình những trò đùa cợt này. Do khả năng dễ nhận
biết của những từ sắp xếp kiểu này, kiểm duyệt cài
đặt (debugging setup) thường dùng chúng để ráp giá trị
khởi đầu cho những tiểu tiết trong bộ nhớ, giúp các lập
trình viên tìm ra những tiểu tiết chưa được ráp giá trị
khởi đầu (not initialised). Một số người thêm chữ “H”

• 00012 = 110
• 00102 = 210
• 01002 = 410
• 10002 = 810
Vì vậy:
Đây là một con tính đơn giản, nhưng cũng đã đòi hỏi
bốn tính cộng, trong khi với một chút luyện tập, 11112
có thể được chuyển thẳng sang F16 mà chỉ cần một
phép tính (xem Biểu thị số thập lục phân). Khi số nhị


4

CHƯƠNG 1. HỆ THẬP LỤC PHÂN

phân là một số lớn, việc đổi chúng sang số thập phân
là một việc dài dòng, tẻ nhạt. Khi đổi số nhị phân sang
thập lục phân, chúng ta chỉ đơn giản chia nhóm các con
số thành những nhóm 4, chuyển mỗi nhóm 4 này thành
một số thập lục phân, giữ nguyên vị trí tương ứng của
nhóm. Ví dụ sau đây chứng tỏ việc chuyển nhị phân
sang thập phân dài dòng như thế nào:

Phần sau đây giới thiệu chu trình của thuật toán trên,
lập trình bằng ngôn ngữ JavaScript, dùng để biến bất
cứ một số thập phân nào sang hệ thập lục phân, kết
quả trả về là một string (dãy các ký tự). Mục đích của
ví dụ là minh họa chu trình của thuật toán (có thể dựa
vào đấy để áp dụng cho các công dụng xử lý khác). Để
áp dụng thuật toán này với dữ liệu cụ thể, có thể dùng
So sánh ví dụ trên với việc chuyển cùng con số sang hệ các toán tử trong phép toán thao tác bit.
function toHex(d) { /* biến đổi sang hệ thập lục phân */
thập lục phân:
Chúng ta cũng có thể đổi thẳng từ hệ thập lục phân var r = d % 16; if(d-r==0) {return toChar(r);} else {return
toHex((d-r)/16)+toChar(r);} } function toChar(n) {
quay trở lại nhị phân như ví dụ trên.
/* biến đổi số nguyên sang ký tự có thể đọc và in
Dùng số bát phân cũng là một cách hữu dụng để xử được */ var alpha = “0123456789ABCDEF"; return
lý dữ liệu trong máy vi tính (nhóm 3 bit thay vì nhóm alpha.charAt(n); }
4); song, cái lợi lớn nhất của thập lục phân so với bát
phân là, để biểu thị một byte (octet), chúng ta chỉ cần
đúng hai con số thập lục phân là đủ. Điều này có nghĩa Cần lưu ý rằng cơ số “16” dùng ở trên có thể được thay
là nếu chúng ta có giá trị của một word (thường là 4 thế bằng bất cứ cơ số nào (chẳng hạn hệ nhị phân (2),
byte), việc nhận ra giá trị riêng của từng byte một là tam phân (3), bát phân (8) v.v..). Sau đây là thủ tục được
một việc khá dễ dàng; ngược lại, nếu chúng ta có giá trị minh họa bằng ngôn ngữ C++ để in ra một số ở hệ bất
của từng byte một, chúng ta cũng có thể dễ dàng ráp kì tương ứng với một số thập phân nhận vào.
chúng lại thành một word.
const
alpha
=
“0123456789ABCDEF";
void
printinbase(long d, short b) { // in ra số ở hệ cơ
số b tương ứng với số thập phân d) short r=d%b; if (d-r)
printinbase(d/b,b); cout << alpha[r]; }

1.7 Đổi gốc từ các hệ số khác
1.7.1

Phép chia lấy số dư trong cơ số
nguồn

1.7.2 Phép cộng và tính nhân trong hệ thập
lục phân
Phương pháp đổi một số sang hệ thập lục phân được
thực hiện tương tự như phương pháp được áp dụng cho
các hệ cơ số khác, bằng cách sử dụng phép chia lấy số
nguyên và số dư trong hệ cơ số nguồn. Trên lý thuyết,
phương pháp này có thể áp dụng được với bất cứ (một
cặp) hệ cơ số nào. Song nói chung theo thói quen sử
dụng của con người và trong kỹ thuật máy tính, phương
pháp này được áp dụng với hệ thập phân và nhị phân.
(Đối với hệ nhị phân, người ta còn có những phương
pháp nhanh gọn hơn nữa.)

Chúng ta có thể biến đổi bằng cách phân giải giá trị của
vị trí của từng con số (hàng đơn vị, hàng chục, hàng
trăm trong hệ thập phân chẳng hạn), rồi biến mỗi giá
trị ấy sang giá trị tương ứng của hệ thập lục phân, sau
đó làm phép cộng hay nhân trên con số ấy để được kết
quả trong hệ thập lục phân. (khi làm tính nhân, nên
có sẵn một bảng cửu chương trong hệ tương ứng (thập
lục phân) để dễ đối chiếu - vì đa số chỉ biết bảng cửu
Chẳng hạn, nếu lấy d là số thập phân cần phải được đổi, chương trong hệ thập phân mà thôi). (Number system
thì dãy số hh₋₁…h2 h1 là những con số để biểu diễn số - Computer Methods in Chemical Engineering)
ở hệ thập lục phân tương ứng. Với cách tính dãy h như Ví dụ: 12310 + 45610
sau:
10010 + 2010 + 310 + 40010 + 5010 + 610 --------------------- hay 6416 + 1416 + 316 + 19016 + 3216 + 616 ----------1. H:= d mod 16
----------- 1F416 + 4616 + 916 11 (Nhớ) ------------- 1F416
50010 + 4616 + 7010 916 910 ----- ----- 24316 57910
(“mod” (modulus (tiếng
Anh)): phép chia lấy dư,
thực hiện phép chia số
nguyên và lấy kết quả
là số dư - chẳng hạn 17
mod 5 = 2 vì 17/5 = 3, dư
2.)
i
2. D := d−h
16
3. Nếu d == 0 thì kết quả là dãy số
h); nếu không, quay trở lại bước 1.

1.7.3 Phép đổi thông qua hệ nhị phân
Vì máy vi tính nói chung dùng hệ nhị phân, nên
phương pháp đổi của máy thường là thông qua hệ nhị
phân trước đã, sau đó dùng sự thông nối trực tiếp giữa
thập lục phân và nhị phân, mà đổi sang hệ thập lục
phân.


1.11. LIÊN KẾT NGOÀI

1.8 Hệ thập lục phân trong con mắt
của giới báo chí và phim ảnh
Trong bộ phim hoạt họa nhiều tập e Simpsons, tập có
tựa đề Treehouse of Horror VI (Ngôi nhà kinh dị trên
cây VI), nhân vật Homer lọt vào tầng không gian thứ 3,
(Homer³), một dãy các số thập lục phân (46 72 69 6e 6b
20 52 75 6c 65 73 21) bồng bềnh trên không tại “vùng đất
của không gian 3 chiều " (3-D land). Đối chiếu những
giá trị thập lục phân này trong bản ASCII cho chúng ta
các con chữ mà khi ghép lại, nó biến thành một dòng
chữ tiếng Anh “Frink rules!" (ngoại trừ hai dấu ngoặc
kép mà thôi) - nghĩa là “Frink trị vì!" hoặc “Frink là
vua”.
Trong chương trình TV ReBoot, có một nhân vật với
cái tên Hexadecimal (hệ thập lục phân).

1.9 Xem thêm
• Số Hex
• Hệ thập phân
• Hệ nhị phân

1.10 Tham khảo
1.11 Liên kết ngoài
• Intuitor Hex Headquarters - Trang đặc biệt dành
cho việc khuyến cáo, đổi hệ số thập phân truyền
thống sang hệ thập lục phân.
• Các phương pháp biến đổi đơn giản
• Leet Key, một phần lắp ráp phụ của Firefox hỗ trợ
việc biến đổi, cùng việc đánh máy chữ, giữa ASCII
và số thập lục phân.
• Bits of Meaning (pd) - Giới thiệu về số học điện
toán trong máy Bendix G-15 của IBM
• Hexadecimal basics - Căn bản về số thập lục phân
• Hexadecimal Numbers Guide - Hướng dẫn về số
thập lục phân
• Hexadecimal Colors - Biểu đạt màu sắc dùng hệ
thập lục phân.

5


Chương 2

Học tăng cường
Trong ngành khoa học máy tính, học tăng cường (tiếng
Anh: reinforcement learning) là một lĩnh vực con của
học máy, nghiên cứu cách thức một agent trong một
môi trường nên chọn thực hiện các hành động nào để
cực đại hóa một khoản thưởng (reward) nào đó về lâu
dài. Các thuật toán học tăng cường cố gắng tìm một
chiến lược ánh xạ các trạng thái của thế giới tới các
hành động mà agent nên chọn trong các trạng thái đó.

Do đó, học tăng cường đặc biệt thích hợp cho các bài
toán có sự được mất giữa các khoản thưởng ngắn hạn
và dài hạn. Học tăng cường đã được áp dụng thành công
cho nhiều bài toán, trong đó có điều khiển robot, điều
vận thang máy, viễn thông, các trò chơi backgammon
và cờ vua.

Môi trường thường được biểu diễn dưới dạng một quá
trình quyết định Markov trạng thái hữu hạn (Markov
decision process - MDP), và các thuật toán học tăng
cường cho ngữ cảnh này có liên quan nhiều đến các kỹ
thuật quy hoạch động. Các xác suất chuyển trạng thái
và các xác suất thu lợi trong MDP thường là ngẫu nhiên
nhưng lại tĩnh trong quá trình của bài toán (stationary
over the course of the problem).

2.1 Các thuật toán
Sau khi ta đã định nghĩa được một hàm trả về thích hợp
cần được cực đại hóa, ta cần chỉ rõ thuật toán sẽ được
sử dụng để tìm chiến lược thu được kết quả trả về cao
nhất. Có hai cách tiếp cận chính, cách tiếp cận hàm giá
trị và cách tiếp cận trực tiếp.

Cách tiếp cận trực tiếp dẫn đến hai bước sau đây:
Khác với học có giám sát, trong học tăng cường không
có các cặp dữ liệu vào/kết quả đúng, các hành động gần
1. Với mỗi chiến lược có thể, lấy mẫu các kết quả
tối ưu cũng không được đánh giá đúng sai một cách
trong khi thực hiện chiến lược đó.
tường minh. Hơn nữa, ở đây hoạt động trực tuyến (online performance) được quan tâm, trong đó có việc tìm
2. Chọn chiến lược có kết quả trả về kỳ vọng cao
kiếm một sụ cân bằng giữa khám phá (lãnh thổ chưa
nhất.
lập bản đồ) và khai thác (tri thức hiện có). Trong học
tăng cường, sự được và mất giữa khám phá và khai thác
đã được nghiên cứu chủ yếu qua bài toán multi-armed Một vấn đề với cách tiếp cận này là số chiến lược có
thể cực kỳ lớn, hoặc thậm chí vô hạn. Một vấn đề khác
bandit.
là các giá trị trả về có thể ngẫu nhiên, khi đó sẽ cần
Một cách hình thức, mô hình học tăng cường bao gồm: đến một lượng lớn các mẫu để có thể ước lượng chính
xác kết quả trả về của mỗi chiến lược. Cách tiếp cận
1. S: tập các trạng thái của môi trường;
trực tiếp là cơ sở cho các thuật toán dùng trong ngành
Robotic tiến hóa.
2. A: tập các hành động; và
Các vấn đề của cách tiếp cận trực tiếp có thể được làm
giảm nhẹ nếu ta giả thiết một cấu trúc nào đó trong bài
toán và bằng cách nào đó cho phép các mẫu thu được
từ một chiến lược này có thể được ảnh hưởng tới các
ước lượng cho một chiến lược khác. Cách tiếp cận hàm
giá trị thực hiện điều này bằng cách chỉ giữ một tập
các ước lượng về các giá trị trả về của một chiến lược π
(thường là chiến lược hiện tại hoặc chiến lược tối ưu).
Trong các cách tiếp cận như vậy, người ta cố gắng ước
lượng một trong hai hàm: giá trị trả về nếu xuất phát
từ trạng thái s và theo chiến lược π như sau,

3. R : tập các khoản “thưởng” với giá trị vô hướng.
Tại mỗi thời điểm t, agent thấy được trạng thái của nó
là s ∈ S và tập các hành động có thể A(s). Nó chọn
một hành động a ∈ A(s) và nhận được từ môi trường
trạng thái mới s₊₁ và một khoản thưởng r₊₁. Dựa trên
các tương tác này, agent học tăng cường phải phát triển
một chiến lược π:S → A có tác dụng cực đại hóa lượng
R=r 0 +r 1 +…+r với các MDP có một trạng thái kết thúc,
hoặc lượng R=Σγt r với các MDP không có trạng thái
kết thúc (trong đó γ là một hệ số giảm khoản “thưởng
trong tương lai” nào đó, với giá trị trong khoảng 0.0 và
1.0).

V (s) = E[R|s,π],
6


2.2. NGHIÊN CỨU HIỆN TẠI
hoặc giá trị trả về kỳ vọng khi thực hiện hành động a
trong trạng thái s và theo chiến lược π nghĩa là,
Q(s,a) = E[R|s,π],
Nếu có sẵn chiến lược tối ưu Q, ta luôn có thể chọn các
hành động tối ưu đơn giản bằng cách tại mỗi trạng thái
chọn hành động với giá trị cao nhất. Để thực hiện được
điều này với V, ta phải có một mô hình môi trường, dưới
dạng các xác suất P(s’|s,a), cho phép tính Q bằng công
thức

Q(s, a) =



V (s′ )P (s′ |s, a),

s′

hoặc ta có thể sử dụng các phương pháp Actor-Critic,
trong đó mô hình được chia làm hai phần: phần critic
giữ ước lượng giá trị trạng thái V, và phần actor có trách
nhiệm chọn các hành động thích hợp với mỗi trạng
thái.
Cho trước một chiến lược cố định π, việc ước lượng
E[R|.] đối với γ=0 là đơn giản, do ta chỉ phải lấy trung
bình của các khoản thưởng trực tiếp. Cách dễ thấy nhất
để thực hiện việc này với γ>0 là lấy trung bình của
tổng trả về sau mỗi trạng thái. Tuy nhiên, kiểu lấy mẫu
Monte Carlo đòi hỏi MPD phải kết thúc.

7
cận, và về lý thuyết người ta còn biết rất ít về hành
vi của các thuật toán học tăng cường trong trường hợp
mẫu nhỏ, ngoại trừ trong các điều kiện tham số (seing)
rất hạn chế.
Một phương pháp khác để tìm chiến lược tối ưu là tìm
thẳng trong không gian các chiến lược. Phương pháp
không gian chiến lược định nghĩa chiến lược là một
hàm có tham số π(s,θ) với các tham số θ. ông thường,
một phương pháp leo đồi (gradient method) được áp
dụng để điều chỉnh các tham số. Tuy nhiên, việc áp
dụng các phương pháp leo đồi không đơn giản, do
không có thông tin nào về độ dốc (gradient information)
được giả thiết. ay vào đó, chính độ dốc phải được ước
lượng từ các mẫu nhiều nhiễu (noisy samples) của kết
quả trả về. Do điều này làm tăng mạnh chi phí tính
toán, nên việc sử dụng một phương pháp leo đồi mạnh
hơn là leo đồi độ dốc cao nhất(steepest gradient descent)
có thể có lợi hơn. Các phương pháp leo đồi dùng cho
không gian chiến lược đã được sự quan tâm lớn trong
5 năm trở lại đây và giờ đã đạt đến giai đoạn tương
đối chính muồi, nhưng lĩnh vực nghiên cứu này vẫn
còn hoạt động. Có nhiều cách tiếp cận khác, chẳng hạn
luyện thép (simulated annealing), có thể dùng để khám
phá không gian chiến lược. Các nghiên cứu về các kỹ
thuật này ít phát triển hơn.

Do đó, nói chung việc ước lượng γ > 0 không dễ. ực 2.2 Nghiên cứu hiện tại
ra, việc này lại khá đơn giản khi ta nhận ra rằng giá trị
kỳ vọng của R tạo nên một phương trình Bellman đệ Các chủ đề nghiên cứu hiện tại bao gồm: Cách biểu
quy: E[R|st ] = rt + γE[R|st+1 ]
diễn khác (chẳng hạn cách tiếp cận Predictive State
Bằng cách thay thế các giá trị kỳ vọng trên bằng các Representation - biểu diễn trạng thái tiên đoán), tìm
ước lượng của ta, V, và thực hiện thuật toán gradient kiếm leo đồi trong không gian chiến lược, các kết quả
descent với hàm chi phí lỗi bình phương, ta thu được hội tụ đối với mẫu nhỏ, các thuật toán và kết quả hội
TD(0) - thuật toán học temporal difference learning. tụ cho các MDP quan sát được một phần (partially
Trong trường hợp đơn giản nhất, tập hợp các trạng thái observable MDP), học tăng cường môdun và phân cấp
và hành động đều là rời rạc và ta giữ các ước lượng (modular and hierarchical). Gần đây, học tăng cường
dạng bản cho mỗi trạng thái. Các phương pháp cặp đôi đã được áp dụng trong lĩnh vực Tâm lý học để giải
trạng thái-hành động là SARSA và Q-Learning. Tất cả thích quá trình học và hoạt động của con người. Cụ thể,
các phương pháp đều có các mở rộng mà nhờ đó một người ta đã dùng học tăng cường trong các mô hình
kiến trúc xấp xỉ nào đó được sử dụng, mặc dù trong một nhận thức giả lập hoạt động của con người trong khi
số trường hợp, sự hội tụ không được đảm bảo sẽ xảy giải quyết các vấn đề hai khi học kỹ năng (v.d., Fu &
ra. Các ước lượng thường được cập nhật bởi một dạng Anderson, 2006).
gradient descent, tuy rằng gần đây đã có các phương
pháp bình phương tối thiểu cho các trường hợp xấp xỉ
tuyến tính.
2.3 Tham khảo
Các phương pháp trên không những đều hội tụ về các
ước lượng đúng cho một chiến lược cố định, và còn có
thể được dùng để tìm chiến lược tối ưu. Việc này thường
được thực hiện bằng cách theo một chiến lược π được
rút ra từ các ước lượng hiện tại, nghĩa là bằng cách hầu
như luôn luôn chọn hành động với lượng giá cao nhất,
và thỉnh thoảng chọn các hành động ngẫu nhiên để
khám phá không gian. Các chứng minh cho sự hội tụ
tới chiến lược tối ưu cũng tồn tại đối với các thuật toán
nói đến ở trênvới một số điều kiện nhất định. Tuy nhiên
tất cả các chứng minh này chỉ chứng tỏ sự hội tụ tiệm

Leslie Pack Kaelbling; Michael L. Liman; Andrew W.
Moore, Reinforcement Learning: A Survey, Journal of
Artificial Intelligence Research 4 (1996) pp. 237–285
Richard S. Suon; Andrew G. Barto, Reinforcement
Learning, MIT Press, 1998, ISBN 0-262-19398-1 (full text
online)
Dimitri P. Bertsekas; John Tsitsiklis, Neuro-Dynamic
Programming, Athena Scientific, 1996, ISBN 1-88652910-8


8

CHƯƠNG 2. HỌC TĂNG CƯỜNG

Jan Peters; Sethu Vijayakumar; Stefan Schaal,
Reinforcement Learning for Humanoid Robotics,
IEEE-RAS International Conference on Humanoid
Robots
Fu, W.-T., Anderson, J. R. (2006). Recurrent Choice
to Skilled Learning Model. Learning: A Reinforcement
Learning Model. Learning: A Reinforcement Learning
Model. Journal of Experimental Psychology: General,
135 (2), 184-206.

2.4 Liên kết ngoài
• Reinforcement Learning Repository
• Reinforcement
Intelligence
• RL-Glue

Learning

and

Artificial


2.5. NGUỒN, NGƯỜI ĐÓNG GÓP, VÀ GIẤY PHÉP CHO VĂN BẢN VÀ HÌNH ẢNH

9

2.5 Nguồn, người đóng góp, và giấy phép cho văn bản và hình ảnh
2.5.1

Văn bản

• Hệ thập lục phân Nguồn: https://vi.wikipedia.org/wiki/H%E1%BB%87_th%E1%BA%ADp_l%E1%BB%A5c_ph%C3%A2n?oldid=
26622496 Người đóng góp: DHN, Mekong Bluesman, Nguyễn anh ang, Trung, Newone, DHN-bot, Hai Dang ang, Escarbot,
Tip~viwiki, Chien~viwiki, JAnDbot, ijs!bot, CommonsDelinker, VolkovBot, TXiKiBoT, SieBot, Loveless, DragonBot, Qbot, PixelBot,
Alexbot, BodhisavaBot, Hệ thập lục phân, MelancholieBot, Luckas-bot, SilvonenBot, Ptbotgourou, Rubinbot, Xqbot, Prenn,
Bongdentoiac, MastiBot, Tnt1984, TuHan-Bot, EmausBot, WikitanvirBot, Cheers!-bot, JhsBot, AlphamaBot, Addbot, Tuanminh01,
TuanminhBot, Én bạc AWB, Tranngocnhatminh, Trantrongnhan100YHbot và 15 người vô danh
• Học tăng cường Nguồn: https://vi.wikipedia.org/wiki/H%E1%BB%8Dc_t%C4%83ng_c%C6%B0%E1%BB%9Dng?oldid=26156284 Người
đóng góp: Ctmt, AlleborgoBot, Loveless, Xqbot, EmausBot, ChuispastonBot, WikitanvirBot, Cheers!-bot, AlphamaBot, Addbot, Lý
Minh Nhật, Ho Nguyen Han, TuanminhBot, Én bạc AWB và Một người vô danh

2.5.2

Hình ảnh

• Tập_tin:Commons-logo.svg Nguồn: https://upload.wikimedia.org/wikipedia/commons/4/4a/Commons-logo.svg Giấy phép: Public
domain Người đóng góp: is version created by Pumbaa, using a proper partial circle and SVG geometry features. (Former versions
used to be slightly warped.) Nghệ sĩ đầu tiên: SVG version was created by User:Grunt and cleaned up by 3247, based on the earlier
PNG version, created by Reidab.
• Tập_tin:Hexadecimal-multiplication-table.png
Nguồn:
https://upload.wikimedia.org/wikipedia/vi/4/42/
Hexadecimal-multiplication-table.png Giấy phép: CC-BY-SA 3.0 Người đóng góp: ? Nghệ sĩ đầu tiên: ?
• Tập_tin:Question_book-new.svg Nguồn: https://upload.wikimedia.org/wikipedia/commons/9/99/Question_book-new.svg Giấy phép:
CC-BY-SA-3.0 Người đóng góp: Chuyển từ en.wikipedia sang Commons. Created from scratch in Adobe Illustrator. Based on Image:
Question book.png created by User:Equazcion Nghệ sĩ đầu tiên: Tkgd2007

2.5.3

Giấy phép nội dung

• Creative Commons Aribution-Share Alike 3.0



x

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay

×