2011-02-09 27 views
5

Tôi đã suy nghĩ về phạm vi loại dữ liệu, một câu hỏi nảy sinh. Như chúng ta đã biết phạm vi của ký hiệu là từ -128 đến 127. Tôi nhận được 127 cách thức, tức là 0111111 = +127đã ký số bổ sung của hai số

Nhưng tôi không thể nhận được cách thức -128? nếu chúng tôi chỉ ON bit dấu, chúng tôi nhận được 11111111, làm thế nào nó là bằng -128?

+0

FWIW, 0111111 = 63. –

Trả lời

0

Số âm có bit dấu được đặt thành 1; -128 là giá trị với bộ bit dấu nhưng không có các bit khác (tức là, nó là số âm nhỏ nhất). Biểu diễn nhị phân của -12810000000. Đối với các độ dài dữ liệu khác, số âm nhỏ nhất trong phần bổ sung của hai luôn là 1000... cho số số chính xác của số không.

8

Hầu hết thời gian, máy tính sử dụng những gì được gọi là bổ sung 2 bổ sung để đại diện cho các số nguyên đã ký.

Cách bổ sung của 2 hoạt động là các giá trị có thể có trong một vòng lặp lớn, từ 0, đến MAX_VALUE, đến MIN_VALUE, bằng 0, v.v.

Vì vậy, giá trị tối thiểu là giá trị tối đa +1 - 01111111 = 12710000000 = -128.

Điều này có thuộc tính tốt đẹp của hành xử chính xác giống như số học chưa ký - nếu tôi muốn làm -2 + 1, tôi có 11111110 + 00000001 = 11111111 = -1, sử dụng tất cả phần cứng tương tự như để thêm không dấu.

Lý do có giá trị bổ sung ở mức thấp là chúng tôi chọn có tất cả các số có tập bit cao âm, có nghĩa là 0 lấy giá trị cách xa mặt tích cực.

+1

Có giá trị chỉ ra rằng có * là * đại diện trong đó '11111111' là số đại diện tối thiểu và thực sự là -127 - đây là biểu mẫu" độ lớn ". Trong độ lớn ký hiệu, có hai số 0 - lần lượt là '+ 0' và' -0', '00000000' và' 10000000'. – caf

+0

@Asad Hanif, bạn có cần thêm trợ giúp không? Nếu câu trả lời này hoặc câu trả lời khác hữu ích cho bạn và trả lời câu hỏi của bạn, xin đừng quên chấp nhận câu trả lời đó. Đồng thời xem [Ý nghĩa của câu trả lời là gì] (https://meta.stackexchange.com/help/accepted-answer) "? và [Tại sao bỏ phiếu lại quan trọng] (https://meta.stackexchange.com/help/why-vote)? –

0

Một cách đơn giản để nghĩ về điều này là bắt đầu tại 01111111 và sau đó tiếp tục trừ 1 cho đến khi nó kết thúc tốt đẹp xung quanh; giá trị trước đó là giá trị âm nhỏ nhất. Trừ 1 từ 00000000 bằng cách sử dụng kỹ thuật "mượn" chuẩn mang lại 11111111, đó thực sự là biểu diễn nhị phân cho -1. Chúng ta có thể tiếp tục trừ xuống 10000000, là -128, và trừ đi một lần nữa sản lượng 01111111, bao quanh.

Các vấn đề liên quan