详解Mysql的整数类型的范围

   MySQL支持多种数据类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。其中, 整数类型包括:TINYINT、SMALLINT、MEDIUMINT、INT和BIGINT。

   下表显示了整数类型的存储和范围。

类型大小范围(有符号)范围(无符号)用途
TINYINT1 字节(-128,127)(0,255)小整数值
SMALLINT2 字节(-32 768,32 767)(0,65 535)大整数值
MEDIUMINT3字节(-8 388 608,8 388 607)(0,16 777 215)大整数值
INT4 字节(-2 147 483 648,2 147 483 647)(0,4 294 967 295)大整数值
BIGINT8 字节

(-9 233 372 036 854 775 808,

9 223 372 036 854 775 807)

(0,18 446 744 073 709 551 615)超大整数值

     本文将以tinyint为例,详细解释它的大小和范围。  tinyint的大小为1字节,即8位二进制。

     在无符号的情况下,值得范围(0,255)比较容易理解,

二进制十进制
0000 0000   0
1111 1111 255

     在有符号的情况下,用最高位表示符号位,其中 0表示正数,1表示负数。先来看正数范围(0,127):

二进制十进制
0 0000000 0
0 1111111127

   接下来看负数的情况,下面的理解很直观,但必须注意:这种理解是错的!稍后会解释原因。

                                           1 0000000    -------------->     -0  
                                           1 1111111       -------------> -127

    也许你会说,首位是1,表示负数。后面7位表示数值,将数值乘以符号就得到了负数,多么完美又直观的表示!

    可是,你应该也已经发现了,在这种表示方式下,能够表示的最小负数为-127,0就被分为 +0和-0两种编码方法,这完全是浪费的。为了避免这种浪费,计算机科学家们设计出了另外一套负数的编码方式,即补码。

     在补码表示方式下,0只有一种表示,而且能够表示的最小负数为-128。

二进制十进制
 1 0000000  -128
 1 1111111-1

     所以,在有符号的情况下,tinyint的表示范围为(-128,127)。

     同理,可以分析其他整数类型在有符号和无符号情况下,能够表示的数值范围。

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值