在计算机储存单元里:
字节(Byte):Byte就是字节,bit就是位
1个二进制的0/1=1bit(位)
1 Byte = 8 bit
1 KB = 1024 Byte
1 MB = 1024 KB
1 GB = 1024 MB
所以,在无符号的情况下:一字节可以放入8个位:
其中每一位都可填入0或1,
1位 二进制最大值为1 (2^1)-1=1
2位 二进制最大值为11 (2^2)-1=3
3位 二进制最大值为111 (2^3)-1=7
以此类推........
在有符号情况下:基础上让8位中的第一位充当符号位,0代表正数,1代表负数一字节可以放入7个位:(如图所示)
符号位 0正、1负 |
相当于变成了7位有效位。
因此:
在1个字节中:
8位有符号的最大值就是0111 1111,最大值是+127,即就是 (2^7)-1,如下:
符号位 0(正) | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
8位有符号的最小值就是1000 0000,最小值是-128,即就是 -2^7;如下:
符号位 1(负) | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
因为实际只有一个0,如果负数方向也从0开始就相当于把0算了2次。在计算机中,默认把0归属于正数方向,所以负数方向就是从-1即就是1000 0001开始的,-1 ~ -128,也是128个数字。另外,默认规定1000 0000(负0)就是-128。
所以:1个字节的有符号整数的取值范围为:-128~127
在2个字节中:共有16个位,首位为符号位,其余15位为放入0或1;
十进制 | 二进制 | ||
最大值 | (2^15)- 1 | 32767 | 01...1 //0后面15个1 |
最小值 | - 2^15 | - 32768 | 10...0 //1后面15个0 |
所以:2个字节的有符号整数的取值范围为:- 32768~32767
在4个字节中:共有32个位,首位为符号位,其余31位放入0或1;
十进制 | ||
最大值 | (2^31)- 1 | 01...1 //0后面31个1 |
最小值 | - 2^31 | 10...0 //1后面31个0 |
所以:4个字节的有符号整数的取值范围为:-2^31~(2^31)-1
在8个字节中:共有64个位,首位为符号位,其余63位放入0或1;
十进制 | ||
最大值 | (2^63)- 1 | 01...1 //0后面63个1 |
最小值 | - 2^63 | 10...0 //1后面63个0 |