我們在數據庫中設置一個int類型,設置好長度,然后會發現並沒有受到長度的限制,這是因為,int值的范圍和這個長度根本沒有關系。
int的存儲大小是4個字節(B),
計算機存儲單位的換算:
1B=8b
1KB=1024B
1MB=1024KB
即4B=32b,也就是二進制的32個1,我們算一下二進制下32個1等於十進制的多少:
小插曲,我在網上找的進制轉換,上圖中是31個1,已經是int類型的最大值了,因為這個工具不支持負數,相當於無負數,但是:
在計算機中,數字最高位是符號位,即正負,正為0,負為1。
也就是這個工具的31個1加上正數的0就是32位了,而當我輸入32個1的時候:
這個值是int類型無符號時的最大值,因為它不再計算正負號占的位置。
我決定反向測試:
這兩個值就是有符號的情況下,int的最大值和最小值了。關於這個負數我也有疑問,可惜計算器放不進32位數,沒辦法測32個1。所以我們可以看出,int的值的范圍受內存的影響。那么int長度有什么用呢?這個長度是顯示長度,它沒法影響值,假設長度設為5,值為1,如果你開了填充0,他會顯示00001。