Theo những gì tôi hiểu, tài liệu nói rằng nó sẽ không lưu trữ chữ "-" ký tự , có nghĩa là nó có thể hiện đang làm những gì mà các trường INTEGER có dấu khác luôn làm và thay vào đó nó lưu trữ một bit dấu để biểu thị các số âm.
Bạn vẫn thấy một dấu trừ đứng trước số vì nó được MySQL tạo ra từ kết quả của bit dấu đó.
Nếu bạn không hiểu về bit dấu, bạn có thể xem xét cách một byte có dấu có thể lưu trữ các số từ -128 đến 127, trong khi một byte không dấu có thể lưu trữ các số từ 0 đến 255. Đó là bởi vì một trong 8 bit trong số có dấu là được sử dụng để lưu trữ +/- (1 là âm, 0 là dương), trong khi các bit còn lại cung cấp số lên đến 2 ^ 7 (-128 hoặc 127).
Vì vậy, ví dụ, nếu các bit 1111 có một bit dấu, chúng sẽ bằng -7 (âm + 4 + 2 + 1), nhưng nếu không có dấu, chúng sẽ bằng 15 (8 + 4 + 2 + 1). Nó vẫn được lưu trữ cùng một lượng bit.
Bạn có thể thắc mắc tại sao giới hạn âm trong một số có dấu có thể sử dụng bit thứ 8, trong khi giới hạn dương được giới hạn trong tổng của 7 bit (nhỏ hơn 1 bit so với bit thứ 8). Điều này là do 10000000 được coi là đồng thời cả âm và bit thứ 8, bởi vì biểu diễn của nó là -0, ngược lại là dư thừa với 00000000 đại diện cho 0. Không có sự phân biệt giữa số 0 âm và dương, vì vậy bit âm có ý nghĩa nhất luôn là giá trị của chính bit đó (nhưng âm).