1字节(byte)=8位(bit)一位可以存储0或者1;
十进制整数转换为二进制整数采用"除2取余,逆序排列";
二进制整数转十进制整数:无符号整数,从右往左依次用二进制位上的数字乘以2的n次幂的和(n大于等于0);
带符号的二进制整数,除去最高位的符号位(1为负数,0为正数);
1的二进制 2| 1 | ......余1 1的二进制:00000001 00000001的十进制:2的0次方 23的二进制 2| 23 | 余1 2| 11 | 余1 2| 5 | 余1 2| 2 | 余0 | 1 | 余1 23的二进制:00010111 10111000的十进制:2^0+2^2+2^3+2^4
就是有无正负标识的整型,计算机编译都是二进制表示的,有符号的整型用最高位来作为符号代表,
“0"代表”+“,“1"代表”-”; 。 (带符号的二进制补码表示法中,第一位就是表示符号,二进制本身无关,即使184的二进制是10111000,但在带符号表示法中第一位1表示的是"-"
最终的表示:取反:01000111加1:01000111 + 1 = 01001000所以,10111000 表示的带符号整数是 -72)
8位无符号整型取值范围: (0000 0000-1111 1111):0 ~ 255 8位有符号整型取值范围: 00000000到01111111,表示0到+127 10000001到11111111,表示-1到-127 10000000没有用到,因为如果我们把它看成-0,那么会和00000000发生重复; 于是计算机将10000000定义为-128(即在最终进位后符号位不产生进位) n位无符号整数,取值范围: 0 ~ ( 2^n - 1 ) n位有符号整数,取值范围: -(2^(n-1)) ~ +(2^(n-1) - 1)
tinyint:
储存占一个字节,一个字节8个位,1bit可以储存1或者0两种可能性,因此tinyint可以储存2的8次方, 也就是256种可能性,从0开始计算,无符号可以储存0~255,有符号则是-128 ~127
smallint:
储存占2个字节,同上也就是2的16次方可以储存65536种可能性,从0开始计算无符号存储0 ~65535, 有符号则是-32768 ~32767
mediumint:
存储所占三个字节,也就是2的24次方,可以存储16777216种可能性,无符号可以存储0~ 16777215, 有符号可以存储-8388608~8388607
int:
存储所占四个字节,也就是2的32次方,可以存储4294967296种可能性,无符号可以存储0~ 4294967295, 有符号则是-2147483648~2147483647
bigint:
存储所占8个字节,也就是2的64次方,可以存储18,446,744,073,709,551,616种可能性, 无符号可以存储0 ~ ( 2^64 - 1 ),有符号则是-(2^(64-1)) ~ +(2^(64-1) - 1)
在mysql中unsigned表示’无符号’的意思,即在下面例子中最大储存值为255
在mysql中zerofill表示数值宽度小于指定宽度后自动补0(当使用zerofill 时,默认会自动加unsigned(无符号)属性)
create table display_witdh(id tinyint(5) unsigned zerofill); insert into display_witdh values(1),(255); select * FROM display_witdh; 查询结果自动补0 | id | |—————————| | 00001 | |—————————| | 00225 |
如果定义字段时没有指定显示宽度,则以该类型能储存的最大值长度作为默认值,例如int默认情况下能储存2147483647,总共10个数组,符号位会占一个宽度,因此int默认是11。