
2字节、4字节、8字节的有符号整数的取值范围
首先,字节(Byte):Byte就是字节,bit就是位
1 Byte = 8 bit
1 KB = 1024 Byte
1 MB = 1024 KB
1 GB = 1024 MB
简单了解字节和位之后,先来看一个最简单的例子,8位-无符号表示的最大最小值。
其中每一位都可填入0或1,
1位 二进制最大值为1 最大值就是1 (2^1)-1
2位 二进制最大值为11 最大值就是3 (2^2)-1
3位 二进制最大值为111 最大值就是7 (2^3)-1
......
所以如果是8位无符号的最大值就是1111 1111,最大值是255,即就是 (2^8)-1。
然而有符号只是在此基础上让8位中的第一位充当符号位,0代表正数,1代表负数。
符号位 0正、1负 |
相当于变成了7位有效位,那么
8位有符号的最大值就是0111 1111,最大值是+127,即就是 (2^7)-1,
8位有符号的最小值就是1000 0000,最小值是-128,即就是 -2^7,
注意:这里为什么是 -2^7,而没有减1,是因为正数方向是从0开始的,0~127,共128个数字;
而负数方向没有0,因为实际上没有正0和负0的区分,只有一个0,如果负数方向也从0开始就相当于把0算了2次。在计算机中,默认把0归属于正数方向,所以负数方向就是从-1即就是1000 0001开始的,-1 ~ -128,也是128个数字。另外,默认规定1000 0000(负0)就是-128,因为7位有效位不可能表示出128。
所以有了简单的基础之后,我们如法炮制就可以得出2字节、4字节、8字节分别对应的有符号数的最大值和最小值。
有符号数:2字节(16位)
十进制 | 二进制 | ||
最大值 | (2^15)- 1 | 32767 | 01...1 //0后面15个1 |
最小值 | - 2^15 | - 32768 | 10...0 //1后面15个0 |
有符号数:4字节(32位)
十进制 | 二进制 | ||
最大值 | (2^31)- 1 | 2147483647 | 01...1 //0后面31个1 |
最小值 | - 2^31 | -2147483648 | 10...0 //1后面31个0 |
有符号数:8字节(64位)
十进制 | 二进制 | ||
最大值 | (2^63)- 1 | 数字很大 | 01...1 //0后面63个1 |
最小值 | - 2^63 | 数字很大 | 10...0 //1后面63个0 |
-----------------------------------------------------------------------------------------------
本篇完
更多推荐
所有评论(0)