当前位置: 首页 > 编程笔记 >

mysql中TINYINT的取值范围

尉迟跃
2023-03-14
本文向大家介绍mysql中TINYINT的取值范围,包括了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呢?这就是本文要说的关键地方了,在计算机中,表示负值是用补码

为什么有符号的TINYINT的最小值是-128?虽然“-0”也是“0”,但根据正、反、补码体系,“-0”的补码和“+0”是不同的,这样就出现两个补码代表一个数值的情况。为了将补码与数字一一对应,所以人为规定“0”一律用“+0”代表。同时为了充分利用资源,就将原来本应该表示“-0”的补码规定为代表-128。

 类似资料:
  • 问题内容: 哪种列类型最适合在MySQL数据库中使用布尔值?我用,但我的同事用。 问题答案: 这些数据类型是同义词。

  • 问题内容: 这个问题已经在这里有了答案 : 7年前关闭。 可能重复: MySql:Tinyint(2)vs tinyint(1)-哪个不同? 之间有什么区别? 问题答案: TinyINT(M)的范围始终是-128 .. + 127有符号或0..255无符号。M是显示宽度。 M表示整数类型的最大显示宽度。最大显示宽度为255。显示宽度与类型可以包含的值的范围无关,如第11.2节“数字类型”中所述。对

  • 问题内容: 我想为库存中的物品设置一个真/假字段。 我想将其设置为布尔值(将其转换为),库存中为1,无库存中为0。 我从供应商那里获取饲料,所以我对自己说:“如果他们通过了多少库存,该怎么办?” 所以我想知道如果我插入一个大于1的数字会发生什么。我假设它将默认为1。 令我惊讶的是,它将允许我保留最大为127的任何数字,超过默​​认值的则为127。 谁能解释为什么? 问题答案: 带符号的数据类型可以

  • 我正在尝试将一个PostgreSQL表迁移到一个包含所有数据的MySQL,但由于有两列,我无法迁移。这些列在Postgresql表中作为布尔值,并且这些列中的值为TRUE或FALSE(看起来像字符串)。我在MySQL中创建了一个布尔列,但它不接受真/假数据。对于这些真/假值,我应该使用什么来代替布尔值?我尝试了tinyint(4),但它不起作用(我必须迁移数据,因为它是真的或假的,而不是t/f或1

  • 问题内容: 在哪种情况下,您会使用哪种?有什么区别吗?持久性引擎通常使用哪一个来存储布尔值? 问题答案: TINYINT是8位整数值,BIT字段可以存储1位BIT(1)和64位BIT(64)之间。对于布尔值,BIT(1)很常见。

  • 问题内容: 我经常在一些表中需要存储一个可以为1或0(true或false,等等)的标志。 我以前用过TINYINT。 我应该改用BIT(1)吗?为什么或者为什么不? 问题答案: 如果您使用的是更高版本的mysql版本,那么5.0.3不再是它的别名,但是如果您创建了一个列,它还是会得到。 因此使用或等于,如果表只有1列,则不会有任何好处。 但是,如果您有更多对/错列,我建议您使用,因为将位列的每个