15 Tóm lại, việc thực hiện chương trình thực hiện các phép toán trên BIT đã giúp tôi nâng cao kiến thức và kỹ năng về lập trình cũng như làm việc nhóm, từ đó giúp tôi phát triển bbn thân
Trang 2LỚP: Công Nghệ Thông Tin 22A
GI<NG VIÊN HƯỚNG D>N: GVC Ths NGUYAN THB THCY LINH
Trang 3DANH SÁNH SINH VIÊN NHÓM 10
ĐT:0816947380E-mail:
duongtuankiet20042020@gmail.com
Bbng phân công công viê dc:
OR, NOT, XOR trên bit
Dương Tuấn Kiệt
i
Trang 4ĐÁNH GIÁ CỦA GIẢNG VIÊN HƯỚNG DẪN
*Chú ý: Sai mẫu sẽ không chấm điểm, nộp trể hạn bị trừ 0.5 điểm/1ngày
2.1 Nêu được kết qub chính đạt
Ngày nộp: ……….
Người nộp
<HỌ TÊN>
Trang 5MỤC LỤC
1 MỞ ĐẦU: 1
2 NỘI DUNG ĐỀ TÀI 1
2.1 Đặt vấn đề (Phát biểu bài toán, gibi thuật) 1
2.1.1: Nhập vào hai số nhị phân cần tính toán 1
2.1.2: Thực hiện các phép toán: 1
2.1.3: In ra kết quả của phép tính 2
2.2 Phương pháp gibi quyết vấn đề (trình bày ý tưởng bằng lời) 2
2.3 Thiết kế và cài đă dt thuật toán (Vẽ sơ đồ chức năng tổng thể và phân rã các macro/chương trình con, sơ đồ thuật toán các chương trình con/thủ tục) 2
2.3.1: Sơ đồ chức năng tổng thể 2
2.3.2: Sơ đồ thuật toán các chương trình con/thủ tục 3
2.3.2.1: Nhập số nhị phân 3
2.3.2.2: Phép "AND" 3
2.3.2.3: Phép "OR" 3
2.3.2.4: Phép "NOT" 3
2.3.2.5: Phép "XOR" 3
2.3.2.6: In ra kết qub 3
2.4 Ví dụ minh họa cho gibi thuật 3
2.5 Đánh giá (gibi thuật) 6
2.5.1: Ưu điểm: 6
2.5.2: Nhược điểm: 6
2.5.3: Tổng kết: 6
2.6 Gibi bài tập minh họa 6
2.7 Giới thiệu DEMO và hướng dẫn sử dụng (chụp hình giao diện và giới thiệu từng bước sử dụng, gibi thích kết qub chạy trình) 7
2.7.1: Giới thiệu DEMO 7
2.7.2: 7
iii
Trang 6Hình 2.7.2.1) Mở file cài đặt Dev C++ 8
Hình 2.7.2.2) Bấm Agree 9
Hình 2.7.2.3) Bấm Next 10
Hình 2.7.2.4) Chọn nơi cài đặt Dev C++ và bấm Install 11
Hình 2.7.2.5) chọn finish 12
Hình 2.7.2.6) giao diện chương trình 13
Hình 2.7.2.7) các chức năng 14
Hình 2.7.2.8) kết qub hiển thị ra màn hình 15
2.8 Nhận xét và bình luận, đề xuất: 15
3 KẾT LUẬN 15
3.1 Kết qub đạt được (về lý thuyết, kỹ năng thực hành/viết Demo, kỹ năng làm việc nhóm): 15
Tóm lại, việc thực hiện chương trình thực hiện các phép toán trên BIT đã giúp tôi nâng cao kiến thức và kỹ năng về lập trình cũng như làm việc nhóm, từ đó giúp tôi phát triển bbn thân và tăng cường sự tự tin trong việc thực hiện các dự án trong tương lai 16
3.2 Hạn chế 16
3.3 Hướng phát triển 16
TÀI LIỆU THAM KHẢO: 18
Trang 71 MỞ ĐẦU:
Đây là một chủ đề quan trọng vì các phép toán trên BIT được sử dụng rộngrãi trong mã hóa, truyền thông, tối ưu bộ nhớ và các ứng dụng khác trongngành công nghiệp và khoa học kỹ thuật Ngoài ra, việc viết chương trìnhthực hiện các phép toán trên BIT sẽ giúp người dùng có thêm kỹ năng lậptrình và hiểu sâu hơn về cách thức hoạt động của máy tính
Lý do vì đây là một chủ đề trong lĩnh vực Tin học và Toán học.Chương trình này sẽ giúp người dùng tính toán các phép toán cơ bbntrên các số trong hệ thống số nhị phân (BIT) như AND, OR, XOR vàcác phép dịch bit
2 NỘI DUNG ĐỀ TÀI
2.1 Đặt vấn đề (Phát biểu bài toán, giải thuật)
Phát biểu bài toán: Viết một chương trình trên máy tính để thực hiện các phép toán cơ
bbn trên các số trong hệ thống số nhị phân (BIT) như AND, OR, XOR và các phép dịchbit, giúp người dùng có thể thực hiện các phép toán trên BIT một cách dễ dàng và chínhxác
OR: Thực hiện phép toán "OR" giữa hai số Các bit trong kết qub sẽ được đặt là
"1" nếu có ít nhất một bit tương ứng trong hai số là "1"
XOR: Thực hiện phép toán "XOR" giữa hai số Các bit trong kết qub sẽ được đặt là
"1" nếu có một trong hai bit tương ứng trong hai số là "1", nhưng không đồng thời
cb hai đều là "1"
Dịch bit: Thực hiện phép toán dịch trái hoặc dịch phbi các bit trong một số nhịphân Trong đó, phép dịch trái sẽ giúp các bit của số bị dịch sang trái một số vị trínhất định, bằng cách thêm các bit "0" ở cuối số, và phép dịch phbi sẽ giúp các bitcủa số bị dịch sang phbi một số vị trí nhất định, bằng cách thêm các bit "0" hoặc
"1" ở đầu số
1
Trang 82.1.3: In ra kết quả của phép tính.
2.2 Phương pháp giải quyết vấn đề (trình bày ý tưởng bằng lời)
Để giải quyết bài toán "Chương trình thực hiện các phép toán trên BIT", chúng ta
có thể sử dụng một số phương pháp sau đây:
1 Sử dụng các thư viện và công cụ hỗ trợ: Các thư viện và công cụ hỗ trợ nhưBitwise Operators trong ngôn ngữ lập trình C++ hay Visual Studio CodeExtensions có thể giúp chúng ta thực hiện các phép toán trên BIT một cách dễdàng và nhanh chóng
2 Thực hiện các phép toán thủ công: Nếu không sử dụng các thư viện và công cụ hỗtrợ, chúng ta có thể thực hiện các phép toán trên BIT bằng cách sử dụng các phéptoán logic cơ bbn như AND, OR, XOR và các phép dịch bit
3 Sử dụng các kỹ thuật tối ưu hoá: Các kỹ thuật tối ưu hoá như Bit Masking hay BitShifting có thể giúp tăng tốc quá trình thực hiện các phép toán trên BIT lên đángkể
Với mỗi phương pháp, chúng ta có thể sử dụng các ngôn ngữ lập trình phổ biến như C++,Java, Python hay JavaScript để xây dựng chương trình thực hiện các phép toán trên BIT.Bằng cách sử dụng các phương pháp này, chúng ta có thể tạo ra những chương trình cótính ứng dụng cao, giúp qubn lý và xử lý các số nhị phân nhanh chóng và chính xác trongcác dự án lập trình của mình
2.3 Thiết kế và cài đă }t thuật toán (Vẽ sơ đồ chức năng tổng thể và phân rã các macro/chương trình con, sơ đồ thuật toán các chương trình con/thủ tục)
Trang 92.3.2: Sơ đồ thuật toán các chương trình con/thủ tục 2.3.2.1: Nhập số nhị phân
Nhập vào số nhị phân Kiểm tra số vừa nhập + Nếu không phbi số nhị phân, yêu cầu nhập lại + Nếu là số nhị phân, lưu số này vào biến
In ra kết qub tính toán của các phép toán
2.4 Ví dụ minh họa cho giải thuật
Trang 11cout<<"Nhap vao mot so: ";
cout<<"Xin Chao Cac Ban! \ n";
cout<<"Nhom 10 gom 4 thanh vien:\n";
cout<<"Duong Tuan Kiet, 0022410015\n";
cout<<"Truong Van Duc Quy,0022410065\n";
cout<<"Lam Tran Phu Hao,0022410549\n";
cout<<"Nguyen Hoa Thanh,0018410669\n";
cout<<"Chuong Trinh Thuc Hien Cac Phep Toan Tren Bit\n";cout<<"Noi Dung La:\n";
5
Trang 12cout<<"2 Mo ta phep toan OR:\n";cout<<"3 Mo ta phep toan XOR:\n";cout<<"4 Mo ta phep toan NOT:\n";cout<<"10 Thoat chuong trinh:\n";cout<<"Chon chuc nang:\n ";
cout<<"Cam on Cac Ban, Hen Gap Lai.\n";cin>>n;
Trang 132.5 Đánh giá (giải thuật)
Hàm kiểm tra số nhị phân giúp đbm bbo đầu vào là số nhị phân hợp lệ
Chương trình sử dụng đúng các toán tử nhị phân (AND, OR, NOT, XOR) đểthực hiện các phép toán, giúp tiết kiệm thời gian tính toán
2.5.2: Nhược điểm:
Chương trình chỉ hỗ trợ tính toán trên số nhị phân đến 32 bit, nếu muốn tínhtoán trên số nhị phân lớn hơn cần phbi sửa đổi code để hỗ trợ số nhị phân lớnhơn
Chương trình chỉ hỗ trợ tính toán trên số nguyên không âm, nếu muốn tínhtoán trên số thực cần phbi sửa đổi code để hỗ trợ số thực
2.5.3: Tổng kết:
Gibi thuật Chương trình thực hiện các phép toán trên BIT là một gibi thuậtđơn gibn nhưng rất hữu ích trong lĩnh vực máy tính và lập trình như xử lýhình bnh, âm thanh, mã hóa dữ liệu Chương trình thực hiện tính toán các
7
Trang 14phép toán trên BIT một cách chính xác và hiệu qub, giúp đơn gibn hóa quátrình tính toán và cbi thiện hiệu suất của chương trình.
2.6 Giải bài tập minh họa
2.7.1: Giới thiệu DEMO
Chương trình này cho phép người dùng nhập vào hai số nhị phân và loại
phép toán cần tính (AND, OR, NOT, XOR) để thực hiện phép tính tương ứng
Trang 15Hình 2.7.2.1) Mở file cài đặt Dev C++
Bước 2: Cửa sổ License Agreement hiện lên, bấm Agree.
9
Trang 16Hình 2.7.2.2) Bấm Agree Bước 3: Ở cửa sổ Choose Components , tiếp tục bấm Next
Trang 17Hình 2.7.2.3) Bấm Next Bước 4: Bấm Browse để chọn nơi cài đặt Dev C++ (nếu cần) và
bấm Install để tiến hành cài đặt
11
Trang 18Hình 2.7.2.4) Chọn nơi cài đặt Dev C++ và bấm Install Bước 5: Bấm Finish để hoàn thành cài đặt
Trang 19Hình 2.7.2.5) chọn finish
Hướng dẫn sử dụng:
Bước 1: Mở chương trình Dev-c++
Bước 2: nhấn tổ hợp phím Fn+F11 (F11) hoặc chọn vào Execute rồi nhấn chọn Compile & run
Trang 20Bước 4: Chương trình sẽ thực hiện phép tính và hiển thị kết qub.
Gibi thích kết qub chạy chương trình:
khi chạy chương trình thì người dùng dễ dàng nhìn thấy được một giao diện dòng lệnh đơn gibn
Hình 2.7.2.6) giao diện chương trình
thì chương trình yêu cầu người dùng chọn 1 trong 4 chức năng sau:
1 phép AND
2 phép OR
3 phép XOR
4 phép NOT
Trang 21Hình 2.7.2.7) các chức năng
kết qub được hiển thị trên Dev-c++
15
Trang 22Hình 2.7.2.8) kết quả hiển thị ra màn hình
2.8 Nhận xét và bình luận, đề xuất:
Chương trình thực hiện các phép toán trên BIT bằng ngôn ngữ lập trình C++ là một chương trình đơn gibn, dễ hiểu và dễ sử dụng Chương trình cho phép người dùng nhập vào hai số nhị phân và loại phép toán để thực hiện phép tính tương ứng, rồi hiển thị kết qub phép tính trên terminal
Tuy nhiên, chương trình chỉ hỗ trợ tính toán trên số nhị phân có độ dài tối đa là 32 bit Điều này giới hạn khb năng của chương trình trong việc thực hiện các phép tính trên các số nhị phân lớn hơn Ngoài ra, do chương trình không có giao diện đồ họa, nó có thể khó để người dùng nhập vào các số nhị phân dài hơn một cách thuậntiện
Để nâng cao khb năng của chương trình, có thể thêm hỗ trợ cho việc tính toán trên các số nhị phân có độ dài lớn hơn 32 bit, hoặc cbi tiến giao diện để tạo ra một giao diện đơn gibn hơn cho người dùng Ngoài ra, việc thêm tính năng lưu kết qub phép tính cũng sẽ giúp người dùng dễ dàng qubn lý các kết qub tính toán của mình hơn
Nắm vững cách chuyển đổi giữa số nhị phân và số thập phân
Cbi thiện khb năng gibi quyết các bài toán liên quan đến số nhị phân và BIT
Về kỹ năng thực hành/viết Demo:
Ứng dụng thành thạo những kiến thức đã học vào thực tiễn trong việc viết chương trình thực hành phép toán trên BIT
Nâng cao khb năng lập trình và tư duy trừu tượng của bbn thân
Hiểu rõ hơn về cấu trúc và cách sử dụng ngôn ngữ lập trình C++
Trang 23Tóm lại, việc thực hiện chương trình thực hiện các phép toán trên BIT đã giúp tôi nâng cao kiến thức và kỹ năng về lập trình cũng như làm việc nhóm, từ đó giúp tôi phát triển bản thân và tăng cường sự tự tin trong việc thực hiện các dự án trong tương lai.
3.2 Hạn chế
Khi thực hiện các phép toán trên BIT, có một số hạn chế cần lưu ý
Không thể thực hiện phép trừ hai số BIT vì BIT chỉ cho phép thực hiện phép cộng
Các phép toán trên BIT đòi hỏi việc thực hiện cập nhật BIT để đbm bbo tính chính xác của kết qub Do đó, khi cần tính tổng các phần tử trong một đoạn, phbi đbm bbo các phần tử trong đoạn đó đều được cập nhật trước khi tính tổng
Thời gian thực hiện các phép toán trên BIT có thể bị bnh hưởng bởi kíchthước của dữ liệu đầu vào Nếu dữ liệu quá lớn, việc thực hiện các phép toán trên BIT có thể trở nên chậm chạp và tốn nhiều thời gian
Vì BIT sử dụng phép tính Modulo trong quá trình tính toán, nên nếu kết qub của phép tính vượt quá giới hạn của kiểu dữ liệu sử dụng, kết qub sẽ không chính xác Do đó, khi sử dụng BIT, cần chú ý đến kích thước của kiểu dữ liệu sử dụng để tránh hiện tượng tràn số
6) Thực hiện các bài kiểm tra để đbm bbo tính đúng đắn và hiệu qub của chương trình
7) Phát triển tài liệu hướng dẫn sử dụng cho chương trình để người sử dụng
có thể hiểu được cách sử dụng và các quy định liên quan
17
Trang 248) Nhận phbn hồi và cbi tiến chương trình theo từng phiên bbn để đáp ứng nhu cầu người sử dụng.
Trang 25TÀI LIỆU THAM KHẢO:
Đây là một số tài liệu tham khbo về chương trình thực hiện các phép toán trên BIT bằng ngôn ngữ lập trình C++:
"Binary Indexed Tree aka Fenwick Tree" của TopCoder: https://www.topcoder.com/community/competitive-
programming/tutorials/binary-indexed-trees/
"Binary Indexed Tree (Fenwick Tree) Tutorial" của Algorithmic Adventures: https://algorithmsandme.com/binary-indexed-tree- fenwick-tree-tutorial/
"Fenwick Tree - Binary Indexed Tree" của Tutorials Point: https://www.tutorialspoint.com/binary-indexed-tree-fenwick-tree
"Fenwick Tree (Binary Indexed Tree)" của GeeksforGeeks: https://www.geeksforgeeks.org/fenwick-tree-binary-indexed-tree/
19