Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 11 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
11
Dung lượng
261,12 KB
Nội dung
Hệthậplụcphân Mục lụcHệthậplụcphân 1.1 Từ nguyên 1.1.1 1.2 Biểu thị số thậplụcphân 1.3 Ứng dụng 1.4 Phân số 1.5 Hài hước 1.6 Triển khai sang hệ nhị phân 1.7 Đổi gốc từ hệ số khác 1.7.1 Phép chia lấy số dư số nguồn 1.7.2 Phép cộng tính nhân hệthậplụcphân 1.7.3 Phép đổi thông qua hệ nhị phân 1.8 Hệthậplụcphân mắt giới báo chí phim ảnh 1.9 Xem thêm 1.10 am khảo 1.11 Liên kết Học tăng cường 2.1 Các thuật toán 2.2 Nghiên cứu 2.3 am khảo 2.4 Liên kết 2.5 Nguồn, người đóng góp, giấy phép cho văn hình ảnh 2.5.1 Văn 2.5.2 Hình ảnh 2.5.3 Giấy phép nội dung Anh ngữ i Chương Hệthậplụcphân Trong toán học khoa học điện toán, hệthậplụcphân (hay hệ đếm số 16, tiếng Anh: hexadecimal), đơn gọi thập lục, hệ đếm có 16 ký tự, từ đến A đến F (chữ hoa chữ thường nhau) Hệ thống thậplụcphân dùng, công ty IBM giới thiệu với giới điện toán vào năm 1963 Một phiên cũ hệ thống này, dùng số từ đến 9, chữ A đến F, sử dụng máy tính Bendix G-15, mắt năm 1956 (computer hackers), bị gợi ý dẫn dụ từ mà gọi tắt thành sex Giáo sư nhà khoa học máy tính Donald Knuth có theo nghĩa từ tên phải senidenary, từ gốc Latinh với nghĩa “nhóm 16” Những từ binary (nhị phân), ternary (tam phân) quaternary (tứ phân) tổ hợp từ gốc Latinh cả, theo nghĩa từ decimal (thập phân) đáng phải denary (hệ mười) Mấy năm trước đây, hệ thống ký tự khác hệthậplục phân, rõ ràng, không nhập nhèm, đề cử (Cf Hexadecimal time) Ví dụ, số thậpphân 79, với biểu thị nhị phân 01001111, viết thành 4F hệthậplụcphân (4 = 0100, F = 1111) 1.2 Biểu thị số thậplụcphân Chú ý bảng sau: hex = thậplụcphân dec = thậpphân Một vài số thậplụcphân hoàn toàn giống với số hệthậpphân (kể người máy vi tính) Vì mà chúng thường ký hiệu theo quy tắc định oct = bát phân 1.1 Từ nguyên 1.1.1 Dưới dạng in ấn, ký hiệu hệ thường định hậu tố, chẳng hạn 5A316 , 5A3SIXTEEN, 5A3HEX Anh ngữ Trong ngôn ngữ lập trình cho máy vi tính - luôn dùng văn đơn (plain text), phân biệt chữ viết trên, chữ viết in ấn - nhiều cách để đánh dấu số hệthậplụcphân xuất Những cách đánh dấu thấy chữ in, đặc biệt nội dung có liên quan đến ngôn ngữ lập trình Chính IBM lựa chọn tiền tố hexa, thay sexa tiếng Latinh Cái tên hexadecimal tên xa lạ, hexa nguyên có gốc từ hexi (έξι) tiếng Hy Lạp có nghĩa “sáu”, decimal lại có gốc Latinh có nghĩa “mười” Có thể hexa lấy từ tiếng Latinh, song chữ deka Hy Lạp lại gần với chữ decem Latinh hơn, nên có số ý kiến cho cách đặt tên có bất Một từ cổ sexidecimal nghe Latinh không (từ Latinh sedecim, có nghĩa 16) Từ đổi số người cho việc dùng từ mạo hiểm, từ có nghĩa khác “gốc 60” Tuy vậy, chữ sexagesimal (gốc 60) giữ lại nhóm tiền tố Trong tài liệu trước máy tính Bendix, từ sexadecimal có dùng đến Ông Steven Schwartzman có ghi lại: “Vì từ hexadecimal từ tương đối dài, nên nhiều viết tắt hex" Từ hexadecimal - thậplụcphân - từ bất thường, từ ghép tiết tố hai thứ tiếng Latinh Hy Lạp Từ nguyên gốc Latinh phải sexadecimal, song kẻ công máy tính Một số ký dụng thường thấy ngôn ngữ: • Ada VHDL gói số thậplụcphân dùng gốc hệ, điểm 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 cho hệ, từ nhị phânthậplục phân, cho hai loại số nguyên (integer) số thực (real)) • C ngôn ngữ lập trình có ngữ pháp tương ứng (như C++, C#, Java Javascript) dùng tiền tố “0x” cho số thậplục phân, chẳng hạn “0x5A3” Số không (0) dẫn đầu dùng để lọc mã (parser) trực tiếp nhận biết số, CHƯƠNG HỆTHẬPLỤCPHÂN chữ “x” đại biểu cho chữ hexadecimal (thập lục phân) - (đối chiếu với đại diện cho bát phân (octal)) Chữ “x” tiền tố “0x” viết hoa (0X) viết thường (0x), song thường thấy viết thường dòng chữ kiểu chữ đánh máy (typewriter type), ví dụ: 5A3 • Các shell *nix (phần mềm dùng để thao tác mệnh lệnh với máy tính, hệ điều hành tương tự UNIX) dùng mã escape tổ hợp ký tự "\x0FF” biểu thức (expression), dùng “0xFF” số (constant) • Trong HTML, ký hiệu hệthậplụcphân biểu thị với cách dùng chữ “x": ֣ tương đương ֣ – với trình duyệt web bạn ֣ theo thứ tự; (dấu tiếng Hebrew Hebrew accent munah) Các mã định màu sắc dùng hệthậplụcphân thường 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 định thậplụcphân cách cho thêm chữ “h” vào đuôi (nếu số bắt đầu chữ, đồng thời đứng sau số 0, định số), chẳng hạn “0A3Ch”, “5A3h” • • • • Một bảng cửu chương thậplụcphân Vì quy định thống nên tất quy ước dùng, đôi khi, viết Song quy ước chúng rõ ràng biệt lập nên có trắc trở xảy Postscript định thậplụcphân dùng tiền tố “16#" Ký hiệu thường dùng (và thường gặp) tiền tố “0x” ký hiệu viết số 16 xuống (subscriptCommon Lisp dùng tiền tố "#x” "#16r” based), số thậplụcphân Chẳng hạn hai số Pascal, assembler khác (AT&T, Motorola), 0x2BAD 2BAD16 đại diện cho số thậpphân vài phiên BASIC dùng tiền tố "$", 11181 (hoặc 1118110 ) chẳng hạn "$5A3” Trong thời kỳ đầu lịch sử máy tính, lựa chọn chữ từ A đến F để thay cho Ngôn ngữ lập trình Smalltalk dùng tiền tố “16r” số tiếp theo, chưa chấp nhận toàn Chú ý Smalltalk chấp nhận biểu thức r - gốc hệ số số từ đặt máy tính, ưa lựa chọn cách dùng số từ đến 5, trở lên (ví dụ: 2r1110 10r14 16rE), với với cấu mã (macron), để biểu thị giá trị từ hạn chế thực tiễn ký tự số 10 đến 15 Những người dùng máy tính Bendix lại nằm ký tự ASCII, 0-9 A-Z dùng chữ “U” đến chữ “Z” Một số phiên Smalltalk cho phép số thậpphân đứng sau dấu chấm ".” biểu đạt số chấm động thậplụcphân (floating point number) 1.3 Ứng dụng (và gốc hệ số khác nữa) • Một số phiên BASIC, đặc biệt ngôn ngữ biến thể Microso tạo QBasic Visual Basic, tiền tố để biểu đạt số thuộc hệthậplục phân, "&H”, ví dụ: "&H5A3"; khác BBC BASIC dùng "&" (được dùng để biểu đạt hệ bát phân (octal) BASIC Microso) Hệthậplụcphân dùng phổ biến lập trình HTML CSS (tạm dịch Chương mục định hình tuần tự) Những lập trình dùng tam kết thậplụcphân (hex triplet) biểu thị màu sắc trang web, bắt đầu dấu "#" Dấu dùng để biểu thị số thậplụcphân nửa Khi biểu thị màu sắc với 24 bit, công thức #RRGGBB ("Đỏ, Vàng, Xanh”) dùng để thể Trong công thức này, “RR” (tiếng • Những ký hiệu X'5A3' thấy; Anh “Red Red”) biểu thị phân hợp màu đỏ, “GG” PL/I dùng ký hiệu (“Green Green”) biểu thị phân hợp màu vàng (đáng • Donald Knuth giới thiệu cách dùng loại chữ phải gọi màu xanh cây, song gọi vàng để phân khác để biểu diễn số hệ đếm biệt với phân hợp tiếp theo, màu xanh lam), “BB” sách ông e TeXbook Trong hệ thống ký (“Blue Blue”) biểu thị phân hợp màu xanh (lam) tổ hiệu ông, số thậplụcphân biểu đạt hợp tam phần, đại diện cho sắc độ màu Lấy ví 1.6 TRIỂN KHAI SANG HỆ NHỊ PHÂN dụ, dáng màu đỏ với giá trị thậpphân (238, 9, 63) mã hóa sang hệthậplụcphân #EE093F Công thức chép từ tổ chức màu sắc hệ thống cửa sổ X (X Window System) vào đằng sau số để biểu thị số số thậplụcphân y luật dùng ngữ pháp ngôn ngữ lập trình assembly cổ Intel Với đuôi “H”, người ta viết từ câu Hệthậpphân dùng kỹ thuật máy tính mới, chẳng hạn 1517ADEADB17CH nhiều khía cạnh chung chung khác, Một ví dụ số ma (magic number) phương pháp thông thường để biểu đạt giá trị tiệp hệ thống phân bổ FAT Mach-O chương byte, dùng dãy ký tự (string), mà người trình Java, số “CAFEBABE” (cô bé quán cà đọc Tất giá trị byte phê) (bao gồm 256 giá trị) biểu thị hệ Cái ngân phiếu Knuth có giá trị đô la thậplụcphân Một số người cho phương pháp hệthậplụcphân (256 xu = 162 ), tức $2.56 dùng hệ ASCII 8-bit, để biểu thị giá trị, phương pháp khả thi, song phương pháp không toàn diện, Bảng liệt kê sau trò đùa với hệthậphệ ASCII bao gồm ký tự không in lục phân: (còn gọi ký tự điều khiển (control characters)), không thích hợp cho mục đích 3x12=36 2x12=24 Trong dòng liên kết nối URL, chữ đặc biệt biểu thị cách dùng mã thậplục phân, 1x12=12 dẫn đầu 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 IPv6, đại diện Ba hàng tích số 12, hàng cuối nhóm số gồm 16 bit, số thậplục phân, hòng “0x12” thậplụcphân lại 18 làm cho việc đọc, chép địa dài 128-bit Giá trị 0xdeadbeef (“ox dead bee” - trâu chết [thành] dễ dàng thịt bò) gài vào nhớ chưa 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ự hệ đếm khác, hệthậplụcphân dùng để biểu thị phân số (vulgar fraction), song Khi làm việc với máy vi tính, thường phải xử chu kỳ thậpphân tái diễn (recurring digits) thường xảy lý liệu nhị phân, song xử lý số hệthậplục ra, số 16 có thừa số nguyên tố: phân lại dễ dàng so với hệ nhị phân (toàn số có Do số 16 bình phương (4²), phân số thậplục 1) nhiều Trong thông thuộc với phân có chu kỳ lặp lại cá biệt, xảy nhiều lần hơn, so hệthậpphânhệ số khác, việc biến đổi số với số thậpphân Chu kỳ thậpphân xảy từ hệ nhị phân sang hệthậplụcphân lại dễ việc mẫu số, với thừa số thấp (denominator in lowest biến chúng sang hệthập phân, số thậplục terms), có thừa số nguyên tố không thấy phân tương đương với bit nhị phân (410 ) hàng số Trong trường hợp số thậplục phân, tất Hãy thử cân nhắc việc biến đổi số 11112 sang hệthậpphân số có mẫu số tích phân Vì vị trí số hệ nhị phân số mũ 2, tạo nên chu kỳ thậpphân tái diễn (cơ số 2) cho phép giá trị hay mà thôi, việc định giá trị số vị trí ấy, tính từ bên phải, việc tương đối dễ dàng: 1.5 Hài hước Hệthậplụcphân dùng trò đùa cợt lập trình viên, số từ tạo dựng số thậplụcphân Một số từ tiếng Anh “dead” (chết), “bee” (thịt bò), “babe” (người yêu bé bỏng) và, với tự phù hợp, từ “c0ffee” (cà phê) Trang ví dụ điển hình trò đùa cợt Do khả dễ nhận biết từ 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 tiểu tiết nhớ, giúp lập trình viên tìm tiểu tiết chưa 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 tính đơn giản, đòi hỏi bốn tính cộng, với chút luyện tập, 11112 chuyển thẳng sang F16 mà cần phép tính (xem Biểu thị số thậplục phân) Khi số nhị CHƯƠNG HỆTHẬPLỤCPHÂNphân số lớn, việc đổi chúng sang số thậpphân việc dài dòng, tẻ nhạt Khi đổi số nhị phân sang thậplục phân, đơn giản chia nhóm số thành nhóm 4, chuyển nhóm thành số thậplục phân, giữ nguyên vị trí tương ứng nhóm Ví dụ sau chứng tỏ việc chuyển nhị phân sang thậpphân dài dòng nào: Phần sau giới thiệu chu trình thuật toán trên, lập trình ngôn ngữ JavaScript, dùng để biến số thậpphân sang hệthậplục phân, kết trả string (dãy ký tự) Mục đích ví dụ minh họa chu trình thuật toán (có thể dựa vào để áp dụng cho công dụng xử lý khác) Để áp dụng thuật toán với liệu cụ thể, dùng So sánh ví dụ với việc chuyển số sang hệ toán tử phép toán thao tác bit function toHex(d) { /* biến đổi sang hệthậplụcphân */ thậplục phân: Chúng ta đổi thẳng từ hệthậplụcphâ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 ví dụ /* biến đổi số nguyên sang ký tự đọc in Dùng số bát phân cách hữu dụng để xử */ var alpha = “0123456789ABCDEF"; return lý liệu máy vi tính (nhóm bit thay nhóm alpha.charAt(n); } 4); song, lợi lớn thậplụcphân so với bát phân là, để biểu thị byte (octet), cần hai số thậplụcphân đủ Điều có nghĩa Cần lưu ý số “16” dùng thay có giá trị word (thường số (chẳng hạn hệ nhị phân (2), byte), việc nhận giá trị riêng byte tam phân (3), bát phân (8) v.v ) Sau thủ tục việc dễ dàng; ngược lại, có giá trị minh họa ngôn ngữ C++ để in số hệ bất byte một, dễ dàng ráp kì tương ứng với số thậpphân nhận vào chúng lại thành word const alpha = “0123456789ABCDEF"; void printinbase(long d, short b) { // in số hệ số b tương ứng với số thậpphân d) short r=d%b; if (d-r) printinbase(d/b,b); cout