2010-05-28 49 views

Trả lời

16

Hầu hết các máy tính ngày nay sử dụng two's complement cho các số nguyên đã ký, nhưng nó có thể thay đổi theo kiến ​​trúc phần cứng, ngôn ngữ lập trình hoặc các vấn đề nền tảng cụ thể khác. Đối với đại diện bổ sung hai, bit quan trọng nhất ("ngoài cùng bên trái") được gọi là bit dấu và sẽ được đặt cho số nguyên âm và rõ ràng cho số nguyên không âm. Tuy nhiên, nó không chỉ là một "lá cờ". Xem Wikipedia article để biết thêm thông tin.

+0

Vì vậy, bit trước sẽ 1 cho âm và 0 cho dương? Còn 0? – User

+0

Không được biểu thị bằng tất cả các bit bằng 0. –

4

Thông thường nó bổ sung 2 lần.

1
0xFFFFFFFF = -1 
0xFFFFFFFE = -2 
0xFFFFFFFD = -3 
... 

& vân vân

0

Bit quan trọng nhất (bit cuối cùng bên trái) được thiết lập cho số âm.

+1

Bạn có nghĩa là "bit đầu tiên ở bên trái" không? –

+0

Làm thế nào về "bit đầu tiên từ bên trái" hoặc "bit cuối TỪ bên phải". :) –

3

Từ tiêu chuẩn C99:

Đối với các loại nguyên ký kết, các bit của các đại diện đối tượng chịu chia thành ba nhóm: bit giá trị, bit đệm, và bit dấu. Có không cần bất kỳ bit đệm nào; ở đó phải chính xác một bit dấu. Mỗi bit là bit giá trị phải có giá trị giống nhau là giống như trong các đối tượng của loại tương ứng (nếu có là bit giá trị M trong loại đã ký và N M = N). Nếu bit dấu là zero, nó sẽ không ảnh hưởng đến giá trị kết quả. Nếu các bit dấu hiệu là một, giá trị được sửa đổi trong một trong các cách sau:

- các giá trị tương ứng với dấu bit 0 là phủ nhận (dấu và độ lớn);

- bit dấu có giá trị - (2N) (hai bổ sung);

- bit dấu có giá trị - (2N - 1) (phần bổ sung).

nào sau đây áp dụng là thực hiện xác định, như là liệu giá trị với dấu bit 1 và tất cả các bit giá trị zero (đối với lần đầu tiên hai), hoặc với bit dấu và tất cả các giá trị bit 1 (đối với bổ sung của một người), là một cái bẫy đại diện hoặc một giá trị bình thường. Trong số trường hợp ký hiệu và độ lớn và bổ sung của những người đó, nếu đại diện này là giá trị bình thường, nó là được gọi là số không âm.

0

Tôi nghĩ rằng câu trả lời là 0110, preceeded bởi 1 lặp đi lặp lại 28 lần, do đó nó trông giống như:

1111 1111 1111 1111 1111 1111 1111 0110;

bước:

  1. chút đại diện cho 10 là:

    0000 0000 0000 0000 0000 0000 0000 1010;

  2. 0->11->0 cho tất cả các bit:

    1111 1111 1111 1111 1111 1111 1111 0101;

  3. thêm 1 đến bit cuối cùng, và tuyên truyền để các bit trước, đã hoàn tất!

    1111 1111 1111 1111 1111 1111 1111 0110;

===

Bạn có thể xác minh bằng cách thêm nó với 10, và bạn sẽ nhận được 0 cho tất cả các bit. Như đã đề cập ở trên, nó là 2-based và sau hai bổ sung.

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