mysql中int的長度與值的問題


我們在數據庫中設置一個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。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM