SKKN kỹ thuật dùng bit trạng thái để xử lý hiệu quả bài toán tin học

35 11 0
SKKN kỹ thuật dùng bit trạng thái để xử lý hiệu quả bài toán tin học

Đ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

Kỹ thuật dùng bit trạng thái để xử lý hiệu toán Tin học Kỹ thuật dùng bit trạng thái để xử lý hiệu toán Tin học MỤC LỤC A ĐẶT VẤN ĐỀ I LÝ DO CHỌN ĐỀ TÀI II CƠ SỞ LÝ LUẬN III CƠ SỞ THỰC TIỄN Thuận lợi: Khó khăn: IV NỘI DUNG .5 V PHẠM VI ỨNG DỤNG CỦA ĐỀ TÀI B NỘI DUNG I CÁC KIẾN THỨC CƠ BẢN VỀ BIT TRẠNG THÁI Phép đảo bit Not Phép AND Phép OR Phép phủ định NOT Phép XOR Phép dịch trái > II CÁC BÀI TOÁN MINH HỌA VỀ XỬ LÝ BIT TRẠNG THÁI 10 Bài toán 10 Bài toán 10 Bài toán 3: .12 Bài toán 4: Phép cộng 12 Bài toán Tập 13 Bài tốn 6: Trị chơi NIM 13 Bài toán Số khác 16 Bài tốn Xâu lập .18 Bài toán FIRSTROW 20 Bài toán 10 Dãy số 21 Bài toán 11: Đầu bếp .23 Trang Kỹ thuật dùng bit trạng thái để xử lý hiệu toán Tin học Bài toán 12: Biểu diễn trạng thái .25 Bài toán 13: Quy hoạch động 26 Bài toán 14: Chọn ô 28 Bài toán 15: Chuyến du lịch - TRIP 32 Bài tốn 16: Cơ gái chăn bị - COWGIRL 33 C KẾT LUẬN 34 Trang Kỹ thuật dùng bit trạng thái để xử lý hiệu toán Tin học A ĐẶT VẤN ĐỀ I LÝ DO CHỌN ĐỀ TÀI Trong thời đại công nghệ thông tin thực bùng nổ có tác động lớn đến với công phát triển kinh tế - xã hội người, đất nước (và thực tế ta nói ta sống kỉ nguyên số, kỉ nguyên công nghệ thông tin) Đảng nhà nước ta xác định rõ để đất nước phát triển yếu tố làm tảng ứng dụng Tin học – công nghệ thông tin phải đưa vào triệt để lĩnh vực xã hội Những yêu cầu đẩy mạnh ứng dụng công nghệ thông tin, đào tạo nguồn nhân lực đáp ứng u cầu Cơng nghiệp hóa, Hiện đại hóa, mở cửa hội nhập, hướng đến kinh tế tri thức đất nước ta nói riêng, giới nói chung Chính xác định tầm quan trọng đó, tơi nghĩ đào tạo cung cấp cho đất nước nhà lập trình viên giỏi việc làm cần thiết Tin học lập trình mơn học khó học sinh THPT Làm để học sinh hiểu, học tốt, yêu thích tham gia tốt kỳ thi học sinh giỏi Tin học điều mà nhiều giáo viên dạy tin học trăn trở Là giáo viên dạy tin nhiều năm thấy việc trang bị cho em học sinh kiến thức thuật toán giải vấn đề cách khoa học cần thiết, điều giúp học sinh hứng thú học tập em tự kiến tạo tri thức tham gia vào việc kiến tạo tri thức cho dựa tri thức có, bổ sung làm cho tri thức cũ hồn chỉnh Học sinh học tập tự giác, tích cực, vừa kiến tạo tri thức, vừa học đựơc cách giải vấn đề, lại vừa rèn luyện đức tính quý báu tính chủ động, tích cực, tính kiên trì vượt khó, tính kế hoạch thói quen tự kiểm tra… Trong đề tài này, xin đề cập tới “Kỹ thuật dùng bit trạng thái để xử lý hiệu toán tin học” Như biết, nhớ máy tính lưu trữ dạng mã hóa hệ nhị phân theo bảng mã IISCI Bản chất máy tính hiểu mã nhị phân dạng dãy số Mỗi số gọi bit Bít đơn vị nhỏ để lưu trữ liệu máy tính điện tử, bit chứa số Chính lập trình ta chuyển toán xử lý dạng bit tốc độ chương trình đẩy nhanh nhiều Trang Kỹ thuật dùng bit trạng thái để xử lý hiệu tốn Tin học Ngơn ngữ lập trình cung cấp cho tốn tử để thao tác bit phép and, or, not, xor, dịch trái, dịch phải Trong đề tài cung cấp kiến thức việc sử dụng phép toán logic từ giúp cho việc thiết kế biểu thức logic dùng nhiêu phép toán điều kiện nhanh chóng, xác, hiệu Hơn đề tài phân tích hiệu việc chuyển toán từ phương pháp xử lý thông thường sang phương pháp xử lý bit II CƠ SỞ LÝ LUẬN Qua nhiều năm giảng dạy, bồi dưỡng học sinh giỏi môn Tin học nhận thấy: - Việc trang bị cho em học sinh kiến thức thuật toán giải vấn đề cách khoa học cần thiết - Phương pháp dùng kỹ thuật bit trạng thái để xử lý thực hiệu toán tin học - Trong tất kỳ thi chọn học sinh giỏi Tỉnh, toán dùng phương pháp bit trạng thái thực hiệu III CƠ SỞ THỰC TIỄN Một số thuận lợi khó khăn thực chuyên đề sáng kiến kinh nghiệm trường Thuận lợi: - Môn Tin học môn học ủng hộ Cấp trên, Sở giáo dục Đào tạo, cấp Ủy, nhà trường tạo điều kiện sắm sửa phòng máy trang thiết bị cần thiết - Trường có sở vật chất tốt - Học sinh hứng thú môn học - Mơn học có ứng dụng lớn thực tiễn nên học sinh chịu khó nghiên cứu học tập - Hàng năm kết thi học sinh giỏi môn Tin đạt kết cao nên tạo động lực lớn cho học sinh tâm học tập Khó khăn: Trang Kỹ thuật dùng bit trạng thái để xử lý hiệu toán Tin học - Các tài liệu bồi dưỡng học sinh giỏi môn tin cịn - Giáo viên đủ chuẩn để bồi dưỡng học sinh giỏi mơn tin cịn hạn chế - Là mơn học khó, địi hỏi người học hội tụ nhiều phẩm chất như: Thông minh, tư tốt, kiên trì, có khiếu lập trình, cẩn thận, nhanh nhạnh xác tuyệt đối kỹ thuật nhỏ IV NỘI DUNG - Các kiến thức bit trạng thái - Các toán minh họa ứng dụng xử lý bit V PHẠM VI ỨNG DỤNG CỦA ĐỀ TÀI Nội dung đề tài sử dụng làm tài liệu cho học sinh trường THCS, THPT u thích mơn tin học lập trình Đề tài tài liệu cho đồng nghiệp ngồi Tỉnh u thích mơn Tin học Trang Kỹ thuật dùng bit trạng thái để xử lý hiệu toán Tin học B NỘI DUNG I CÁC KIẾN THỨC CƠ BẢN VỀ BIT TRẠNG THÁI Quy ươc vị trí bit: Mỗi byte bao gồm bit mã số từ phải sang trái gọi bit thấp đến bit cao Bit nằm bên phải xem thấp bit nằm bên trái Các bit đánh số sau: Mỗi bit nhận giá trị Tại thời điểm thực chương trình bit đươc nhận giá trị xác định Mọi số nguyên máy biểu diễn dạng nhị phân, ví dụ số 19 biểu diễn sau: Bit Giá trị 0 0 1 (số 19) Các phép tốn logic bit có phép and, or, not, xor, dịch trái, dịch phải Các phép toán sau thực giá trị nguyên cho kết giá trị nguyên Phép đảo bit Not Đổi giá trị bit từ thành ngược lại Trong C phép đảo kí hiệu ~ Ví dụ Các tốn thử thao tác bit (bitwise) Dữ liệu lưu trữ máy tính dạng nhị phân 1, ví dụ: unsigned char a = 12; Thì lưu trữ nhớ là: 0000 1100 Tương tự unsigned int b = 95; Lưu trữ b nhớ là: 0000 0000 0000 0000 0000 0000 0101 1111 Không gian lưu trữ kiểu unsigned int lớn unsigned char unsigned int dùng 32 bits để biểu diễn unsigned char dùng bits để biểu diễn Các toán tử thao tác bit Phép thao tác bit Kí hiệu Trang Kỹ thuật dùng bit trạng thái để xử lý hiệu toán Tin học Phép AND & Phép OR | Phép phủ định NOT ~ Phép XOR ^ Phép dịch trái - Shift left > Phép AND Kí hiệu: & Bảng chân trị A B A&B 0 0 1 0 1 Phép AND có giá trị hai tốn hạng có giá trị Ví dụ: A 0000 1100 B 0101 0101 C = A & B 0000 0100 Phép OR Kí hiệu: | Bảng chân trị A B A|B 0 0 1 1 Trang Kỹ thuật dùng bit trạng thái để xử lý hiệu toán Tin học 1 Phép OR có giá trị hai tốn hạng có giá trị Ví dụ: A 0000 1100 B 0101 0101 C=A|B 0101 1101 Phép phủ định NOT Kí hiệu: ~ Bảng chân trị A ~A 1 Phép NOT đảo bit thành ngược lại Ví dụ A 0000 1100 B = ~A 1111 0011 Phép XOR Kí hiệu: ^ Bảng chân trị A B A^ B 0 0 1 1 1 Phép XOR có giá trị hai tốn hạng có giá trị, giá trị 1, giá trị Ví dụ Trang Kỹ thuật dùng bit trạng thái để xử lý hiệu toán Tin học A 0000 1100 B 0101 0101 C=A^B 0101 1001 Phép dịch trái Phép dịch phải n bit tương đương với phép chia cho 2n Ví dụ A 0000 1100 —> B = A >> 0000 0011 Các ví dụ thao tác bit AND unsigned char a = 5; // 00000101(5) unsigned char b = 6; // 00000110(6) unsigned char c = a & b; // 00000100(4) OR unsigned char a = 5; // 00000101(5) unsigned char b = 6; // 00000110(6) unsigned char c = a | b; // 00000111(7) NOT Trang Kỹ thuật dùng bit trạng thái để xử lý hiệu toán Tin học unsigned char a = 5; // 00000101(5) unsigned char b = ~a; // 11111010(250) unsigned char a = 5; // 00000101(5) unsigned char b = 6; // 00000110(6) int c = a ^ b; // 00000011(3) unsigned char a = 5; // 00000101(5) XOR Dịch trái unsigned char a = 5; // 00000101(5) unsigned char b = a >> 1; // 00000010(2) II CÁC BÀI TOÁN MINH HỌA VỀ XỬ LÝ BIT TRẠNG THÁI Bài toán 1: Lấy bit Ứng dụng Viết hàm getbit(x,i) cho giá trị bit thứ i(tính từ phải sang) số nguyên x char Getbit(char x, i) { return (x Shr i) && 1; } Bài toán 2: Lấy số Ứng dụng Viết hàm GetNum(x, j, i) cho số tạo bit tính từ trái qua phải bit thứ j đến bit thứ i (j>=i) Ví dụ GetNum(103,5,1)=19 103=0000 0000 0110 0111 GetNum(103,5,1)= 0000 0000 0001 0011 =19 Bài giải: Trang 10 Kỹ thuật dùng bit trạng thái để xử lý hiệu toán Tin học { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); freopen("FIRSTROW.inp","r",stdin); freopen("FIRSTROW.out","w",stdout); for(i=0;i k >> a >> b; if (k==0) {cout =0){ long long tmp; if (a > r || l > b) tmp = 0; else { long long mama = min(r, b), mimi = max(a, l); tmp = max(mama - mimi + 1, 0LL); } res = res + tmp; l = l * 2; r = r * + 1; x ; } cout 0) { Sumarize = Sumarize or b[i]; } If(Sumarize == (2^K-1)) { //Print the result } } Độ phức tạp đoạn code O(2^N*K), với N=K=20 chạy 1s ok Bài tốn 12: Biểu diễn trạng thái Với toán 10, biểu diễn khơng có Thực tế kĩ thuật hiểu xa tí, ta xét ví dụ quen thuộc sau: Ta có ba chai nước tích V 1, V2, V3 (Vi < 10) (đơn vị thể tích) Ban đầu ta có chai nước thứ đầy nước hai chai lại khơng chứa Bạn cần tìm cách rót cho bình V3 chứa K (K

Ngày đăng: 25/05/2021, 12:22

Mục lục

  • A. ĐẶT VẤN ĐỀ

    • I. LÝ DO CHỌN ĐỀ TÀI

    • II. CƠ SỞ LÝ LUẬN

    • III. CƠ SỞ THỰC TIỄN

      • 1. Thuận lợi:

      • 2. Khó khăn:

      • IV. NỘI DUNG

      • V. PHẠM VI ỨNG DỤNG CỦA ĐỀ TÀI

      • B. NỘI DUNG

        • I. CÁC KIẾN THỨC CƠ BẢN VỀ BIT TRẠNG THÁI

          • 1. Phép đảo bit Not

          • Các toán thử thao tác trên bit (bitwise)

            • 2. Phép AND

            • 3. Phép OR

            • 4. Phép phủ định NOT

            • 5. Phép XOR

            • 6. Phép dịch trái <<

            • 7. Phép dịch phải >>

            • Các ví dụ thao tác cơ bản trên bit

            • II. CÁC BÀI TOÁN MINH HỌA VỀ XỬ LÝ BIT TRẠNG THÁI

              • Bài toán 1: Lấy bit

              • Bài toán 2: Lấy số

              • Bài toán 3:

              • Bài toán 4: Phép cộng

              • Bài toán 5. Tập con

              • Duyệt qua tất cả các tập con có k phần tử

Tài liệu cùng người dùng

Tài liệu liên quan