Biểu diễn số âm theo dãy nhị phân

Chào mọi người, em đang học môn điện tử số ở trường và đang học về phần tính toán theo các hệ cơ số khác nhau trong đó có phần biểu diễn số âm theo dãy nhị phân. Có 3 cách đó là SM(sign magnitude form), phần bù 1 và phần bù 2. SM là với n bit thì bit đầu sẽ là bit dấu (0 là dương, 1 là âm) và n - 1 bit sau đó sẽ biểu diễn giá trị. Em có đọc được trên các trang nước ngoài là do hạn chế của SM trong việc tính toán nên mới sinh ra phần bù 1 và bù 2, cụ thể là với số 0, với 4 bit ta biểu diễn được theo 2 cách là 0000 và 1000, còn vì sao thì giảng viên và các trang mạng họ không giải thích nốt. Em vẫn thắc mắc vì sao điều này lại gây bất lợi cho việc tính toán. Anh chị có thể giải thích hoặc đưa ra 1 số VD giúp em được không ạ, em cảm ơn!

Dùng biểu diễn SM thì hết sức không tự nhiên.
Ví dụ lấy 1 trừ 3: 0001_{SM} - 0011_{SM} = 1010_{SM} nhưng khi trừ hai số nhị phân sẽ ra 1110_2 (!)
Như vậy lại phải tách ra 1 < 3 nên lấy 3 - 1 = 2 rồi thêm dấu trừ vào nữa.
Lấy -1 cộng 2: 1001_{SM} + 0010_{SM} = 0001_{SM} nhưng 1001_2 + 0010_2 = 1011_2

Tóm lại dùng SM thì phải xét cùng hay trái dấu, rồi trị tuyệt đối nào lớn hơn; trong khi bù 1, bù 2 chỉ cần đưa hai toán hạng vào.

6 Likes

Em cảm ơn anh nhiều ạ

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?