Làm thế nào để 0 có hai giá trị trong phần bù của một người?


12

Người ta nói rằng trong phần bù 2 của 2 chỉ có một giá trị, trong khi phần bù của 1 có cả +0 và -0 có các giá trị riêng biệt. Họ là ai?


8
0 không có hai giá trị. Nó có giá trị 0. Thời gian. Những gì nó không có ở 1 của bổ sung là hai cơ quan đại diện . Nhưng đó không thực sự là một cái gì đó độc đáo. Ví dụ, số 10 có vô số đại diện theo số thập phân: 10, +10, 010, +010, 0010, EST10, Cuộc, v.v.
Jörg W Mittag

Chính xác. Các giá trị chỉ là các lớp tương đương của các biểu diễn và cái được gọi là giá trị 0 0 xảy ra là một lớp tương đương chứa cả hai 000...0111...1. Nhưng hai đại diện này vẫn chỉ chiếm một giá trị duy nhất.
leftaroundabout

Câu trả lời:


19

Trong 1 giây bổ sung, bạn chỉ cần đảo ngược tất cả các bit.

Hãy xem xét 2 ví dụ này (giả sử 8 bit):

  • 4=000001004=11111011

  • 0=000000000=11111111

Vì vậy, bạn có 2 cách để đại diện cho số 0

Trong phần bù của 2, bạn thêm 1 vào phần biểu diễn phần bù của 1 cho số âm

  • 41111101111111100
  • 01111111100000000

Vì vậy, bạn chỉ có một cách để đại diện cho 0 trong trường hợp này

Như bạn có thể thấy từ các ví dụ, sự khác biệt là:

  • 27+1271
  • 27271

7
Nó có thể là đáng nói rằng 2 của bổ sung có lợi thế hơn để nó bên cạnh chỉ là một số lượng nhiều hơn trong phạm vi, thậm chí nếu bạn không đi vào chi tiết những gì họ đang có.
KRyan

7
Cũng có thể đề cập đến một trong những lợi thế đã nói ở phần bình luận ở đây: Một trong những lợi thế chính là phép trừ (/ thêm số âm) có thể được thực hiện chỉ bằng cách giả vờ các số không dấu và thêm chúng. Không có trường hợp đặc biệt cần thiết cho phép trừ = mạch và logic đơn giản hơn nhiều. Trang này có một bài viết hay về chủ đề đó.
Jason C

3

00110


Những người bổ sung hoặc phép trừ hoạt động với kết thúc mang theo. Tất nhiên, những gì hiển thị cho lập trình viên không cần phải là đại diện cơ bản.
ttw

1
@ttw Câu hỏi hỏi hai đại diện của số 0 là gì, vì vậy tôi không chắc chắn phép cộng, phép trừ và lập trình viên đi vào đâu.
David Richerby

3

Nói về hai giá trị 0 khác nhau trong phần bù của một người là sai lệch. Phần bù của một (và phần bù của hai) là biểu diễn nhị phân của số. Họ mô tả một cách để biểu diễn các số ở dạng nhị phân và cách thực hiện các phép toán số học trên chúng. Số được biểu thị bằng chuỗi bit là giá trị.

000=00

00011

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.