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

Tiểu Luận - Môn - Kiến Trúc Máy Tính - Đề Tài - Thực Hiện Các Phép Tính Cộng, Trừ, Nhân, Chia Số Nhị Phân 32 Bit.pptx

41 4 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

Thông tin cơ bản

Tiêu đề Thực Hiện Các Phép Tính Cộng, Trừ, Nhân, Chia Số Nhị Phân 32 Bit
Trường học Đại Học Bách Khoa Hà Nội
Chuyên ngành Kiến Trúc Máy Tính
Thể loại Tiểu luận
Thành phố Hà Nội
Định dạng
Số trang 41
Dung lượng 6,12 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

PowerPoint Presentation VIẾT CHƯƠNG TRÌNH THỰC HIỆN CÁC PHÉP TOÁN CỘNG, TRỪ, NHÂN, CHIA TRÊN SỐ NHỊ PHÂN 32 BIT Đề tài HỆ NHỊ PHÂN  Hệ nhị phân (hay hệ đếm cơ số hai) là một hệ đếm dùng hai ký tự để[.]

Trang 1

VIẾT CHƯƠNG TRÌNH THỰC HIỆN CÁC PHÉP TOÁN CỘNG, TRỪ, NHÂN, CHIA

TRÊN SỐ NHỊ PHÂN 32 BIT

Đề tài:

Trang 3

CÁC PHÉP TOÁN TRÊN SỐ NHỊ PHÂN

Trang 4

CÁC PHÉP TOÁN TRÊN SỐ NHỊ PHÂN

Trang 5

CÁC PHÉP TOÁN TRÊN SỐ NHỊ PHÂN

Phép nhân:

Phép tính nhân trong hệ nhị phân cũng tương tự như phương pháp làm trong hệ thập phân.

2

Trang 6

CÁC PHÉP TOÁN TRÊN SỐ NHỊ PHÂN

Phép chia:

Phép tính chia trong hệ nhị phân cũng tương tự như phương pháp làm trong hệ thập phân Ví dụ:

2

Trang 7

Ý tưởng thuật toán trên C#

A[a-1]       A[1]  A[0]

Mảng kết quả nói chung và các mảng khác trong thuật toán này được miêu tả như một mảng được đánh số 0 bắt đầu từ phía bên phải Vì các phép toán cộng trừ đều bắt đầu từ bít bên phải

Ví dụ mảng A có a phần tử được miêu tả:

Trang 8

Ý tưởng thuật toán trên C#

 Các biến và mảng dùng chung:

Trang 9

Ý tưởng thuật toán trên C#

 Các hàm con được sử dụng :

Trang 10

Ý tưởng thuật toán trên C#

 Các hàm con được sử dụng :

Trang 11

Ý tưởng thuật toán trên C#

 Giao diện chương trình:

Trang 12

Button “Nhập xong”

 Sao khi nhập số nhị phân vào thì bắt buộc người dùng phải click vào

button “nhập xong” để tiếp tục chương trình Việc bắt buộc nhập này nhầm mục đích:

 Sao lưu lại chuỗi nhập vào ban đầu thành chuỗi X và Y, chuyển 2 chuỗi này thành mảng số nhị phân( đánh số 0 từ bên trái) và tìm ra số bit của chúng (x và y).

 Đảo mảng MangX, MangY lại để được cách đánh chỉ số mong muốn.

Vd: Số nhị phân 10010001 nhập vào

 Sao khi gọi LayMang(): 1 0 0 1 0 2 1 3 0 4 0 5 0 6 1 7

 Gọi DaoMang() để được mảng: 1706051403020110

 Đồng thời kiểm tra mảng nhập vào có phải là số nhị phân không.

Trang 14

Hàm con KiemTra() :

int KiemTra(int[] A, int a)

{

for (int i = a - 1; i >= 0; i )

if (A[i] != 0 && A[i] != 1)

Trang 15

Button “Đặt lại”

 Khi click vào đây, các dữ liệu nhập vào trước đó sẽ bị xóa để nhập mới Đồng thời các kết quả xuất hiện trước đó cũng bị xóa.

 Các nút lệnh “Cộng”, “Trừ”, “Nhân”, “Chia” sẽ bị dấu đi, bắt buộc

người dùng phải click “Nhập xong” để tiếp tục.

Trang 16

Button “Thoát”

 Click vào đây, một hộp thoại xuất hiện:

 Click Yes để thoát khỏi chương trình.

 Click No để quay trở lại chương trình

Trang 19

3 Với biến nhớ thay đổi thành 1:

Trang 20

 Sau khi thực hiện xong vòng lặp, được mảng kết quả là C có 32 bit và biến “nho” trả về có giá trị 1 hoặc 0.

 Tùy cách biến đổi mà chuyển mảng C thành chuổi Text để xuất ra

ngoài

 Nếu tại i=31, “nho=1”=> tràn số

Trang 21

PHÉP TRỪ

 Hai mảng A,B cùng 32 bit được đánh số 31,

30… 2,1,0 (nhìn từ trái sang phải).

 Sử dụng vòng lặp for chạy từ phần tử i=0 đến phần tử i=31, trừ từng bit dựa vào biến “nho”:

 Với biến “no” ban đầu khởi tạo bằng 0:

Trang 23

Với biến nợ thay đổi thành 1

Trang 24

 Phép toán này cần so sánh hai mảng:

bit bang nhau return 0, A>B return 1, A<B return -1

Trang 25

 Dùng MangX và MangY đã sao lưu lại để thực hiện.

 Ta tạo mảng C có c phần tử đều là bit 0, trong đó c=x+y

 Dùng vòng lặp for lấy từng phần tử của MangY:i chạy từ 0-> y-1

Với mõi giá trị i, ta tạo mới 1 mảng tam có c bit đều bằng 0

Lấy phần tử đầu tiên của MangY nhân lần lượt với tất cả các phần tử của MangX-> ghi kết quả vào mảng tam-> cộng kết quả của mảng tam với mảng C-> được C mới

PHÉP NHÂN

Trang 26

3

Trang 30

 Lần lượt thực hiện cho đến khi hết số phần tử của MangY( y-1) Sau mỗi lần thực hiện ta cộng kết quả của tam và C vừa thực

hiện ở trên( cứ mỗi lần như vậy tam sẽ lùi lại 1 đơn vị)=> kết

Trang 33

 Cho vòng lặp for bắt đầu từ bit tiếp theo của MangX (x-y) đến hết Lấy lần lược từng nhóm (y+j) bit từ mảng MangX( mảng tam) với j: 0->x-y so sánh với mảng MangY, và thực hiện phép trừ :

+ Nếu tam[]<=MangY[]: C[i]=0

• Nếu tam[]<MangY[]: tam[] như cũ

• Nếu tam[]=MangY[]: tam[] có tất cả bit đều bằng 0 + Ngược lại: C[i]=1, tam[]=tam[]-MangY

dần từ (y-1) đến x bit trong khi MangY thì vẫn y bit không đổi, nên không gọi được PhepTru() Để gọi PhepTru() thì tam[] và MangY[] phải cùng số bit nên để dễ dàng và không ảnh hưởng đến việc thực hiện phép nhân, ta dùng mảng CopyY với n_CopyY lấy từ MangY[]:

Trang 35

tam //[]tam sau khi đảo

Thực hiện soSanh( tam, CopyY )

Trang 37

4

Trang 38

//Hết vòng lặp for

[]du=[]tam; Số dư = 1

Trang 39

//Hết vòng lặp for

[]du=[]tam; Số dư = 1

Ngày đăng: 21/08/2023, 09:55

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w