mysql中TINYINT的取值范圍


在MySQL的數據類型中,Tinyint的取值范圍是:帶符號的范圍是-128到127。無符號的范圍是0到255(見官方《MySQL 5.1參考手冊》http://dev.mysql.com/doc/refman/5.1/zh/column-types.html#numeric-types)。

 

Tinyint占用1字節的存儲空間,即8位(bit)。那么Tinyint的取值范圍怎么來的呢?我們先看無符號的情況。無符號的最小值即全部8位(bit)都為0,換算成十進制就是0,所以無符號的Tinyint的最小值為0.無符號的最大值即全部8bit都為1,11111111,換算成十進制就是255.這很好理解。

 

有符號的Tinyint的取值范圍是怎么來的呢?在計算機中,用最高位表示符號。0表示正,1表示負,剩下的表示數值。那么有符號的8bit的最小值就是

 

  1  1  1  1  1  1  1  1=-127

表示負值

最大值:

  0  1  1  1  1  1  1  1=+127

表示正值

 

怎么有符號的最小值是-127,而不是-128呢?這就是本文要說的關鍵地方了,在計算機中,表示負值是用補碼(正碼、反碼、補碼的概念見http://indian.blog.163.com/blog/static/1088158200610942745817/

 

為什么有符號的TINYINT的最小值是-128?雖然“-0”也是“0”,但根據正、反、補碼體系,“-0”的補碼和“+0”是不同的,這樣就出現兩個補碼代表一個數值的情況。為了將補碼與數字一一對應,所以人為規定“0”一律用“+0”代表。同時為了充分利用資源,就將原來本應該表示“-0”的補碼規定為代表-128。


免責聲明!

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



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