Nó không phân biệt chúng. Nhưng với sự bổ sung, tính toán giống nhau:
Dưới đây, d
sẽ được nối thêm vào số thập phân và b
thành số nhị phân. Các tính toán sẽ có số nguyên 8 bit.
-1d + 1d = 1111 1111b + 1b = 1 0000 0000b
Nhưng kể từ khi chúng tràn (vâng, đó là 8 0
s và một 1
trên 8 bit số nguyên), kết quả là bằng 0.
-2d + 1d = 1111 1110b + 1b = 1111 1111b = -1d
-1d + 2d = 1111 1111b + 10b = 1 0000 0001b (this overflows) = 1b = 1d
-1d + -1d = 1111 1111b + 1111 1111b = 1 1111 1110b (this overflows) = 1111 1110b = -2d
Và nếu bạn xem xét các hoạt động trên unsigned (giá trị nhị phân sẽ không thay đổi):
255d + 1d = 1111 1111b + 1b = 1 0000 0000b (this overflows) = 0d
254d + 1d = 1111 1110b + 1b = 1111 1111b = 255d
255d + 2d = 1111 1111b + 10b = 1 0000 0001b (this overflows) = 1b = 1d
255d + 255d = 1111 1111b + 1111 1111b = 1 1111 1110b (this overflows) = 1111 1110b = 2d
Unsigned so với ký là như vậy, chỉ là trình bày hình ảnh của chưa ký, chỉ được sử dụng khi hiển thị cho một người :-)
xem http://en.wikipedia.org/wiki/Signedness và http://en.wikipedia.org/wiki/Signed_number_representations – mtijn
Tôi không hỏi cách số đã ký được thể hiện trong máy tính – viperchaos
bạn đã đọc liên kết? Chúng được ghi nhận bởi vì chúng có liên quan đến câu hỏi của bạn – mtijn