Computer >> Máy Tính >  >> Lập trình >> lập trình C

Hệ thống số nhị phân - Tràn trong phép cộng số học trong C / C ++?

Hệ thống số bổ sung của 2 được triển khai rộng rãi trong kiến ​​trúc máy tính.

Số bổ sung của N-bit 2 Hệ thống có thể biểu diễn Số từ -2n-1 đến 2n-1- 1

4 Bit có thể biểu diễn các số từ (-8 đến 7)

5 Bit có thể biểu diễn các số từ (-16 đến 15) trong Hệ thống bổ sung của 2.

Tràn xảy ra đối với phép cộng khi Số bổ sung của 2 N-bit 2 được thêm vào và câu trả lời quá lớn để vừa với Nhóm N-bit đó.

Một máy tính chứa các thanh ghi cố định N-Bit. Kết quả của phép cộng hai Số N-Bit sẽ dẫn đến số N + 1 Bit tối đa.

Mang Flag lưu trữ Bit bổ sung đó. Nhưng không phải lúc nào Carry cũng chỉ định tràn.

Phát hiện tràn

Tràn xảy ra khi -

  • Kết quả của phép cộng hai số âm là dương hoặc

  • Kết quả của phép cộng hai số âm là số âm.

Vì vậy, tràn có thể được phát hiện bằng cách xác minh Bit quan trọng nhất (MSB) của hai toán hạng và kết quả. Nhưng Thay vì triển khai Tràn bộ so sánh 3 bit cũng có thể được phát hiện khi triển khai Bộ so sánh 2 bit chỉ bằng cách xác minh Mang vào và Mang ra từ MSB’s. Chúng tôi xem xét việc bổ sung N-Bit cho số Bổ sung của 2.

Hệ thống số nhị phân - Tràn trong phép cộng số học trong C / C ++?


Tràn xảy ra khi Số tiền mang vào không bằng Số tiền mang ra. Biểu thức trên cho tràn có thể được thảo luận từ phân tích bên dưới.

Hệ thống số nhị phân - Tràn trong phép cộng số học trong C / C ++?


Trong trường hợp của Hình đầu tiên, MSB của hai số là 0 cho biết chúng là số dương. Ở đây nếu Giá trị mang vào là 1, chúng ta nhận được MSB của kết quả là 1 cho biết kết quả là âm (Tràn) và Kết quả là 0. Giá trị mang vào không bằng Giá trị mang ra do đó tràn.

Trong trường hợp thứ hai, MSB của hai số là 1 cho biết chúng là số âm. Ở đây nếu Giá trị mang vào là 0, chúng ta nhận được kết quả MSB là 0 cho biết kết quả là dương (Tràn) và Chi tiêu là 1. Giá trị mang vào không bằng với Giá trị mang ra do đó tràn.

Vì vậy, Mang vào và Mang ra tại MSB là đủ để phát hiện Tràn.

Hệ thống số nhị phân - Tràn trong phép cộng số học trong C / C ++?


Cổng XOR phía trên có thể được triển khai để phát hiện tràn.