在mysql中存储有符号数字的TINYINT数据类型
TINYINT data type to store signed numbers in mysql
我在MYSQL中有一个表MACRecord。我有3个字段声明为TINYINT(4)
(RSSI1, RSSI2, RSSI3
),默认值为0
。我用它来存储有符号的负值-e - -90, -84
等。我试着理解每个数字在这列中的长度。我有一个c++
代码,以字节为单位输出每列的长度,如下所示:
lengths = mysql_fetch_lengths(result);
num_rows = mysql_num_rows(result);
for(i = 3; i < num_fields; i++)
{
if (strstr(fields[i].name, "RSSI") != NULL)
{
printf("Column %u is %lu bytes in length.n",
i, lengths[i]);
}
所以现在,例如,如果列3,4和5是我的RSSI的列包含值,如- 90,0(默认),-83,我得到如下输出:
第3列长度为3字节
第4列的长度为1字节。
第5列长度为3字节
我不明白为什么在我的RSSI
的列中具有例如-90
的值,这些列被声明为只能存储1 byte
值的TINYINT(4)
显示为具有3 bytes
的数据?默认值0
是有意义的。如果我描述我的表,我可以看到数据类型是TINYINT
,但它仍然说长度值3 bytes
。
| Field | Type | Null | Key | Default | Extra |
| RSSI1 | tinyint(4) | YES | | 0 | |
| RSSI2 | tinyint(4) | YES | | 0 | |
| RSSI3 | tinyint(4) | YES | | 0 | |
我有点困惑。
不明白为什么在我的RSSI的列中声明为TINYINT(4)的值例如-90,它只能存储1字节值
在小数。显示为具有3字节的数据?
"-90"是三个字节的十进制,-90是一个字节的二进制。
相关文章:
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- 检查输入是否不是整数或数字
- 如何(从固定列表中)选择一个数字序列,该序列将与目标数字相加
- 如何用数字处理log(0)
- 最高有效数字侧的第N位
- 如何获取一个数字的前3位
- 查找最接近的大于当前数字的数字的索引
- 找到两对数字,使它们的乘积的绝对差最小化
- 我想做一个彼此不同但重复出现的数字
- 将数字转换为字母(例如:123 转换为一二三)
- C++如何计算用户输入的数字中的偶数位数
- 如何在C++中确定文本文件中的元素是字符还是数字
- 打印数字图案
- C++问题:用户认为数字1-100,程序提出问题不超过6次即可得到答案。无法正确
- 如何检查一个c++字符串中有多少相同的字符/数字
- 求出有多少个数字是完美平方,而sqrt()是L,R范围内的素数
- 将数字打印成文字
- 当使用比格式支持的精度更高的精度来显示数字时,会写出什么数据
- 在mysql中存储有符号数字的TINYINT数据类型