Tải bản đầy đủ (.pptx) (41 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (6.32 MB, 41 trang )

Đề tài:
VIẾT CHƯƠNG TRÌNH THỰC HIỆN
CÁC PHÉP TỐN CỘNG, TRỪ, NHÂN, CHIA
TRÊN SỐ NHỊ PHÂN 32 BIT


HỆ NHỊ PHÂN

1

  Hệ nhị phân (hay hệ đếm cơ số hai) là một hệ đếm
dùng hai ký tự để biểu đạt một giá trị số, bằng tổng
số các lũy thừa của 2. Hai ký tự đó thường là 0 và
1.
 Trong số nguyên có dấu A: được biểu diễn bởi n
bit như sau:


• A là số dương: bit =0
• A là số âm: bit =1;


2

CÁC PHÉP TOÁN TRÊN SỐ NHỊ PHÂN
 Phép cộng:
Cộng hai đơn vị trong hệ nhị phân được làm như
sau:
0+0=0
0+1=1
1+0=1


1 + 1 = 0 (nhớ 1)


2

CÁC PHÉP TỐN TRÊN SỐ NHỊ PHÂN
 Phép trừ:
Phép tính trừ theo quy chế :
0−0=0
0 − 1 = 1 (mượn 1)
1−0=1
1−1=0


2

CÁC PHÉP TỐ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

CÁC PHÉP TỐ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ụ:



Ý tưởng thuật tốn trên C#
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 tố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ả:

a-1

a-2

a-3

… 







2

1

0

A[a-1]

 


 

 

 

 

 

 

A[1] 

A[0]


Ý tưởng thuật toán trên C#
 Các biến và mảng dùng chung:


Ý tưởng thuật toán trên C#
 Các hàm con được sử dụng :


Ý tưởng thuật toán trên C#
 Các hàm con được sử dụng :


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

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


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(): 1001021304050617
 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.


Hàm con LayMang() :
void LayMang(string TextBox, int[] A, out int a)//từ
một chuổ!
i, chuyể!
n thành ma
!ng kí tự 32 bit
{
StringToArray(TextBox, A, out a);
DaoMang(A, a);
for (int i = a; i < 32; i++)
{
A[i] = 0;
a++;

}
}


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)
{
return 1;
}
return 0;
}//khổng pha
!i sổ;nhị phân thì return 1


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.


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

 Click Yes để thốt khỏi chương trình.
 Click No để quay trở lại chương trình



PHÉP CỘNG
 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, cộng từng bit dựa vào biến “nho”:
 Với biến “nho” ban đầu khởi tạo bằng 0:



3

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


 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ố



×