Theo mặc định, các giá trị bằng số trong C được ký, có nghĩa là chúng có thể vừa âm và dương. Mặt khác, giá trị chưa được ký, không cho phép số âm.
Vì tất cả chỉ là về bộ nhớ, cuối cùng tất cả các giá trị số được lưu trữ dưới dạng nhị phân. Một số nguyên không dấu 32 bit có thể chứa các giá trị từ tất cả các số nhị phân 0 đến tất cả các số nhị phân 1s. Khi nói đến số nguyên có dấu 32 bit, nó có nghĩa là một trong các bit của nó (quan trọng nhất) là một cờ, đánh dấu giá trị là dương hoặc âm. Vì vậy, đó là vấn đề giải thích, cho biết giá trị đó được ký kết.
Giá trị được ký tích cực được lưu trữ giống như giá trị chưa ký, nhưng số âm được lưu trữ bằng cách sử dụng phương thức bổ sung hai của phương thức.
Nếu bạn muốn viết giá trị âm trong nhị phân, trước tiên hãy viết số dương, đảo ngược tiếp theo tất cả các bit và cuối cùng thêm 1. Khi giá trị âm trong bổ sung của hai số được thêm vào một số dương có cùng độ lớn, kết quả sẽ là 0.
trong ví dụ dưới đây cho phép thỏa thuận với con số 8-bit, vì nó sẽ được đơn giản để kiểm tra:
positive 95: 01011111
negative 95: 10100000 + 1 = 10100001 [positive 161]
0: 01011111 + 10100001 = 100000000
^
|_______ as we're dealing with 8bit numbers,
the 8 bits which means results in 0
Bảng chỉ thiếu dấu trừ. Phải có dấu trừ trước số đầu tiên trong mỗi phạm vi giá trị. –
Cảm ơn tất cả mọi người, +1 cho tất cả mọi người ở đây, tôi chắc chắn có gì đó sai với cuốn sách –