【IT168技术文档】1. 环境版本:
OS : LINUX AS4
MYSQL: 5.0.51a-log
ENGINE : Myisam
2. 本章研究的数值类型对象:
TINYINT 1个字节 FIXED
SMALLINT 2个字节 FIXED
MEDIUMINT 3个字节 FIXED
INT, INTEGER 4个字节 FIXED
BIGINT 8个字节 FIXED
DECIMAL(M,N) >=4字节 FIXED
3. 数值类型: TINYINT SMALLINT MEDIUMINT INT BIGINT
这几种数据存取方式都是一样的: 高位优先存储,符号位(0正,1负)
drop table if exists heyf ;
create table heyf (id TINYINT ) type myisam ;
insert into heyf values (10),(-10) ;
system hexdump /opt/mysql/data/test/heyf.MYD
------------------------------------------
0000000 0afd 0000 0000 fd00 00f6 0000 0000
000000e
------------------------------------------
其中:
ROW1:
--------------------------------
fd : 行header
0a : 值10
---------------------------------
ROW2:
--------------------------------
fd : 行header
f6 : 值-10的补码
---------------------------------
如果是正数,第1位为"0", 直接读出来即可;
如果是负数,第1位为"1", 则按常规办法将值 取反+1.
比如:
原值 原二进制 取反 加1 十进制
-------------------------------------------------------
f6 --> 1111 0110 --> 0000 1001 --> 0000 1010 --> 10
其他几个类型请读者举一反三.