1. Trang chủ
  2. » Luận Văn - Báo Cáo

HỆ ĐẾM Khái niệm hệ đếm

13 11 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Chương 1: HỆ ĐẾM Khái niệm hệ đếm: Hệ đếm hiểu tập kí hiệu quy tắc sử dụng tập kí hiệu để biểu diễn xác định giá trị số Trong hệ đếm số b (b>1), kí hiệu dùng có giá trị tương ứng 0, 1, , b-1 Giả sử N có biểu diễn: dndn-1dn-2 d1d0 , d-1d-2 d-m Trong n +1 số chữ số bên trái, m số chữ số bên phải dấu phân chia phần nguyên phần phân số N di phải thỏa mãn điều kiện: ≤ di < b (-m ≤ i ≤ n) Khi giá trị số N tính theo cơng thức: N = dnbn + dn-1bn-1 + +d0b0 +d-1b-1 + +d-mb-m (1) Chú ý: Để phân biệt số biểu diễn hệ đếm người ta viết số làm số số Ví dụ: Nb biểu diễn N hệ đếm b Các hệ đếm thường dùng: * Hệ thập phân (hệ số 10) dùng 10 kí hiệu 0, 1, 2, 3, 4, 5, 6, 7, 8, Ví dụ: 28,910 = x 101 + x 100 + x 10-1 * Hệ nhị phân (hệ số 2) dùng hai kí hiệu 0, Ví dụ: 102 = x 21 +0 x 20 = 210 101,12 = x 22 + x 21 + x 20 + x 2-1 = 5,510 * Hệ hexa (hệ số 16) sử dụng kí hiệu 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, A, B, C, D, E, F nhận giá trị tương ứng 10, 11, 12, 13, 14, 15 hệ thập phân Ví dụ: AF016 = 10 x 162 + 15 x 16 + x 16 = 280010 Chuyển đổi biểu diễn số hệ thập phân sang hệ đếm số khác: Nguyên tắc : Chuyển từ hệ số thập phân sang hệ số Để chuyển từ hệ thập phân sang hệ số bất kỳ, nguyên tắc chia số lấy phần dư tiếp tục chia phần nguyên lấy phần dư tiếp sau xếp thứ tự ngược từ lên Ví dụ: Lấy số 3295 (trong hệ thập phân) 3295 chia = 1647.5 (1647 -> Dư 1) 1647 (phần nguyên) chia = 823.5 -> Dư 823 chia = 411.5 -> Dư 411 chia = 205.5 -> Dư 205 chia = 102.5 -> Dư 102 chia = 51 -> Dư 51 chia = 25.5 -> Dư 25 chia = 12.5 -> Dư 12 chia = -> Dư chia = -> Dư chia = 1.5 -> Dư 1 chia = 0.5 -> Dư (phần nguyên < dừng) Sắp xếp số dư từ lên ta được: 3295 (demical) = 110011011111 (binary) Cũng với số ta chuyển từ 10 sang thập lục phân sau : 3295 chia 16 = 205.9375 (205 dư 15) tức chữ số F hệ hexa 205 chia 16 = 12.8125 (12 dư 13) tức D 12 chia 16 = 0.75 (0 dư 12) tức C Vậy số hệ hexa CDF ** Đối với phần lẻ số thập phân, chuyển sang nhị phân số lẻ nhân với Phần nguyên kết bit nhị phân, phần lẻ kết lại tiếp tục nhân phần lẻ kết Ví dụ: Chuyển số 0.62510 sang hệ nhị phân 0.625 x = 1.25, lấy số 1, phần lẻ 0.25 0.25 x = 0.5, lấy số 0, phần lẻ 0.5 0.5 x = 1.0, lấy số 1, phần lẻ Kết thúc phép chuyển đổi, lấy phần dư từ xuống Với hệ khác tương tự Nguyên tắc : Chuyển từ hệ số thập phân Có số nhị phân A sau: A=anan-1an-2…a1a0 a-1a-2…a-m Dấu chấm dấu phân cách hàng thập phân Giá trị A tính sau: A=an2n + an-12n-1 + an-22n-2 +…+a121 + a020 + a-12-1+ a-22-2 +…+ a-m2-m Ví dụ số nhị phân: Chuyển số 1110110.110101 sang số thập phân 1110110.1 1 -1 -2 -3 -4 -5 -6 1110110.110101=1x26 + 1x25 + 1x24 + 0x23 + 1x22 + 1x21 + 0x20 + 1x2-1 +1x2-2 + 0x2-3 + 1x2-4+ 0x2-5 + 1x 2-6 = 64 + 32 + 16 + + + + + 0.5 + 0.25 + + 0.0625 + + 0.015625 = 118.828125 Vậy 1110110.110101 = 118.828125 10 Với hệ khác tương tự Nguyên tắc : Chuyển nhanh hệ số bội Có bảng hệ số nhị phân - thập lục - bát phân - thập phân sau 0000 | | | 0001 | | | 0010 | | | 0011 | | | 0100 | | | 0101 | | | 0110 | | | 0111 | | | 1000 | | 10 | 1001 | | 11 | 1010 | A | 12 | 10 1011 | B | 13 | 11 1100 | C | 14 | 12 1101 | D | 15 | 13 1110 | E | 16 | 14 1111 | F | 17 | 15 Ví dụ chuyển nhị phân sang thập lục phân : 110011011111 -> 1100 1101 1111 -> C D F (bảng tra học thuộc) Quá trình ngược lại tương tư từ C tra bảng bit nhị phân Ở ta áp dụng để chuyển qua lại giá trị nhị phân thập lục nhị phân bát phân Muốn chuyển thập lục bát phân chuyển trung gian qua nhị phân Nguyên tắc : Chuyển nhanh hệ số 10 với hệ nhị phân Base-10 Decimal Conversion—63204829 Baseexponent 107 106 105 104 103 102 101 100 Column Value Decimal Weight 10000000 1000000 100000 10000 1000 100 10 Column Weight 60000000 3000000 200000 4000 800 20 60000000 + 3000000 + 200000 + + 4000 + 800 + 20 + = 63204829 Base-2 Binary Conversion—1110100 (233) Baseexponent 27 26 25 24 23 22 21 20 Column Value 1 1 0 Decimal Weight 128 64 32 16 Column Weight 128 64 32 0 128 + 64 + 32 + + + + + = 233 - Chương SỐ NGUYÊN TỐ Một số tự nhiên p (p>1) số nguyên tố p có hai ước số p Ví dụ số nguyên tố: 2, 3, 5, 7, 11, 13, 17, 19, 23, Kiểm tra tính nguyên tố: a Phương pháp kiểm tra số nguyên tố truyền thống: Nhập vào số Xác định xem số có phải số nguyên tố hay không Ý tưởng: Số nguyên tố số chia cho Giả sử số vừa nhập vào n, ta cho i chạy từ đến n-1, n chia hết cho i lần lặp có nghĩa n khơng ngun tố, không chia hết cho lần lặp nguyên tố Về nguyên tắc vậy, người ta chứng minh cần xét từ đến phần nguyên N Như thuật tốn tối ưu Chương trình Pascal: program kiem_tra_nguyen_to; uses crt; var n,i:integer; bl:boolean; begin clrscr; bl:=true; write('nhap vao so can kiem tra tinh nguyen to: '); readln(n); if n trái với giải thiết Vậy hai số a b, phải có số nhỏ x Dựa vào đặc điểm trên, ta giới hạn phạm vi i 2->n-1 thành 2->sqrt(n) Tuy nhiên, sqrt(n) với n khơng phương số vô tỉ, i số nguyên, cần làm tròn sqrt(n) Phạm vi 2->trunc(sqrt(n)) (trunc (x) lấy phần nguyên x) b Phương pháp kiểm tra số nguyên tố theo xác suất Từ định lý nhỏ Fermat: Nếu p số nguyên tố a số tự nhiên ap mod p = a Ta có cách kiểm tra tính ngun tố Fermat: Nếu 2n mod n # n không số nguyên tố Nếu 2n mod n = nhiều khả n số nguyên tố Ví dụ: 29 mod = 512 mod = #2, số khơng số nguyên tố 23 mod = mod = 2, nhiều khả số nguyên tố, thực tế số nguyên tố 211 mod 11 = 2048 mod 11 = 2, nhiều khả 11 số nguyên tố, thực tế 11 số nguyên tố - Chương ƯỚC SỐ, BỘI SỐ Số ước số số Giả sử N phân tích thành thừa số nguyên tố sau: N = bj ck Ước số N có dạng: ap bq Do đó, số ước số N (i+1) cr 0≤ p ≤ i, 0≤ q ≤ j, , ≤ r ≤ k (j+1) (k + 1) Ví dụ: * N = 100 = 22 x 52, số ước số 100 là: (2+1)(2+1) = ước số (các ước số là: 1, 2, 4, 5, 10, 20, 25, 50, 100) * N= 24 = 23 x 3, số ước số 24 là: (3+1)(1+1) = ước số (các ước số là: 1, 2, ,3, 4, 6, 8, 12, 24) Tổng ước số số: N = Đặt N1 = bj bj ck ck Gọi F(t) tổng ước t, ta có: F(N) = F(N1) + a = (1 + a + + ai) F(N1) + + F(N1) F(N1) = F(N1) = Ví dụ: Tổng ước 24 là: x = 60 Ước số chung lớn hai số Ước số chung lớn (USCLN) số tính theo thuật tốn Euclid USCLN(a,b) = USCLN (b,(a mod b)) Chương trình Function USCLN(a,b:longint):longint; var tmp :longint; begin while b>0 begin a:=a mod b; tmp:=a; a:=b; b:=tmp; end; exit(a); end; Bội số chung nhỏ Bội số chung nhỏ (BSCNN) hai số tính theo cơng thức: BSCNN (a,b) = = xb - Chương 4: LÝ THUYẾT TẬP HỢP Các phép toán tập hợp a Phần bù A X: kí hiệu Ᾱ, tập hợp phần tử X không thuộc A: Ᾱ={x X: x b Hợp A B: kí hiệu A A B = {x:x B Là tập hợp phần tử thuộc vào A thuộc vào B: A x c Giao A B: kí hiệu A A A} B} B, tập hợp phần tử đồng thời thuộc A B: B = {x:x A x B} d Hiệu A B: kí hiệu A\B, tập hợp phần tử thuộc tập A không thuộc B: A\B = {x:x A x B} Các tính chất phép tốn tập hợp: a Kết hợp: (A B) C =A (A B) C =A A B=B A A B=B A (B A (B (B C) (B C) C) = (A B) (A C) = (A B) b Giao hoán: A c Phân bố: C) (A C) d Đối ngẫu = = Tích Đề - tập hợp Tích Đề - ghép hai tập hợp: A B = {(a,b)| a A, b B} Tích Đề - mở rộng ghép nhiều tập hợp: A1 A2 Ak = {(a1, a2, , ak)| Ai, i = 1, 2, ,k} Nguyên lý cộng Nếu A B hai tập hợp rời |A B| = |A| + |B| Nguyên lý cộng mở rộng cho nhiều tập hợp đôi rời nhau: Nếu {A1, A2, , Ak} phân hoạch tập X thì: |X| = |A1| +|A2| + + |Ak| Nguyên lý bù trừ: Nếu A B khơng rời thì: |A B| = |A| + |B| - |A B| Nguyên lý mở rộng cho nhiều tập hợp: Giả sử A1, A2, , Am tập hữu hạn: |A1 A2 Am| = N1 – N2 + + (-1)m-1Nm Trong Nk tổng phần tử tất giao cua k tập lấy từ m tập cho Nguyên lý nhân: Nếu thành phần có thứ tự k thành phần (a1, a2, , ak) có ni khả lựa chọn (i = 1, 2, , k), số tạo tích số khả n1 n2 nk Một hệ trực tiếp nguyên lý nhân: |A1 A2 Ak| = |A1| |A2| |Ak| Chỉnh hợp lặp: Xét tập hữu hạn gồm n phần tử A = {a1, a2, , an} Một chỉnh hợp lặp chập k n phần tử có thứ tự gồm k phần tử A, phần tử lặp lại Một chỉnh hợp lặp chập k n xem phần tử tích Đề - Ak Theo nguyên lý nhân, số tất chỉnh hợp lặp chập k n nk = nk Chỉnh hợp không lặp: Một chỉnh hợp không lặp chập k n phần tử (k n) có thứ tự gồm k phần tử lấy từ n phần tử tập cho Các thành phần không lặp lại Để xây dựng chỉnh hợp không lặp, ta xây dựng dần phần tử Thành phần có n khả lựa chọn Mỗi thành phần tiếp theo, số khả lựa chọn giảm so với thành phần đứng trước, theo nguyên lý nhân, số chỉnh hợp không lặp chập k n n(n-1) (n – k + 1) = n(n - 1) (n – k +1)= Hoán vị Một hoán vị n phần tử cách xếp thứ tự phần tử Một hoán vị n phần tử xem trường hợp riêng chỉnh hợp không lặp k = n Do số hốn vị n phần tử n! 10 Tổ hợp Một tổ hợp chập k n phần tử (k n) không kể thứ tự gồm k thành phần khác lấy từ n phần tử n cho = = Một số tính chất: = = =1 = + (với < k < n) - Chương SỐ FIBONACCI Số Fibonacci xác định công thức sau: F0 = F1 = Fn = Fn-1 + Fn-2 với n Một số phần tử dãy số Fibonacci N Fibonaccin 1 Chương trình 5 Program catalan; uses crt; var i,n,f1,f2: integer; begin clrscr; write('Nhap n: '); readln(n); f1:=0; f2:=1; for i:=1 to n begin write(f1,' '); f2:=f2+f1; f1:=f2-f1; end; readln; end * Số Fibonacci đáp án toán: toán cổ việc sinh sản cặp thỏ, đếm số cách xếp n – DOMINO - Chương SỐ CATALAN Số Catalan xác đính cơng thức sau: Catalann = = với n Một số phần tử dãy số Catalan N Catalann 1 14 42 132 Thuật toán Chưa viết * Số catalan đáp án tốn: có cách khác đặt n dấu ngoặc mở n dấu ngoặc đóng đắn? Có nhị phân khác có (n + 1) lá? Cho đa giác lồi (n+2) đỉnh, ta chia đa giác thành tam giác cách vẽ đường chéo khơng cắt đa giác Hổi có cách chia vậy? - Chương XỬ LÝ SỐ NGUYÊN LỚN Nhiều ngơn ngữ lập trình cung cấp kiểu liệu nguyên lớn, chẳng hạn Free Pascal có kiểu số 64 bit (khoảng 19 chữ số) Tuy nhiên ñể thực phép tính với số ngun ngồi phạm vi biểu diễn đuợc cung cấp (có hàng tram chữ số chẳng hạn), cần tự thiết kế cách biểu diễn hàm thực phép toán co với số nguyên lớn Biểu diễn số nguyên lớn Thông thuờng người ta sử dụng cách biểu diễn số nguyên lớn sau: − Xâu kí tự: cách biểu diễn tự nhiên đơn giản nhất, kí tự xâu tương ứng với chữ số số nguyên lớn tính từ trái qua phải − Mảng số: Sử dụng mảng lưu chữ số (hoặc nhóm chữ số), biến ghi nhận số chữ số để thuận tiện q trình xử lí − Danh sách liên kết số: Sử dụng danh sách liên kết chữ số (hoặc nhóm chữ số), cách làm linh hoạt việc sử dụng nhớ Trong phần này, sử dụng cách biểu diễn thứ nhất, biểu diễn số nguyên lớn xâu kí tự xét số nguyên lớn không âm Type bigNum = string; Phép so sánh Để so sánh hai số nguyên lớn a, b biểu diễn xâu kí tự, truớc tiên ta thêm chữ số vào đầu số có số chữ số nhỏ để hai số có số luợng chữ số Sau sử dụng trực tiếp phép tốn so sánh xâu kí tự Hàm cmp so sánh hai số nguyên lớn a, b Giá trị hàm trả a = b a>b -1 a

Ngày đăng: 13/09/2022, 11:31

Xem thêm:

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w