int 类型的取值范围
来源:互联网 发布:hadoop大数据平台构建 编辑:程序博客网 时间:2024/04/28 23:09
大伙都知道int类型的 取值范围是 -2147483648 到 2147483647
那为什么不是 -2147483647 到 2147483648 呢?
因为int类型占4个byte, 就是32个bit 了, 而32个二进制位中最高位的那个一位是表示正负的。
所以只有31 个位来表示int 类型本身的大小了。
从 0000000 00000000 00000000 00000000 到 1111111 11111111 11111111 11111111
其中后面31个1 就是 2147483647 啊(2^31 - 1)
所以不算上最高位的符号位的话, 31位 共可以表示 2147483647 个 非负整数, 其中包括2147483646 个正数 和 1个0
而加上符号位后,可以表示负数了, 加上符号1后,2147483647 31位也可以公可以表示 2147483647 个 非正整数啊,
从10000000 00000000 00000000 00000000 到 11111111 11111111 11111111 11111111
问题来了 非正整数那个符号位是1 非负正数那个符号位是0
10000000 00000000 00000000 00000000 和 00000000 00000000 00000000 00000000
??
实际上负数在内存里是用二进制补码表示的(反码+1)
所以规定 00000000 00000000 00000000 00000000 是0
而 1开头的 2147483647 全部是负数
而 10000000 00000000 00000000 00000000 就用来表示最小的负数 -2147483648
所以符号位0开头的int类型整数 能表示 2147483646 个整数 和0
而符号位为1开头的int类型整数 能表示 2147483647 个负数
范围就是 -2147483648 到 2147483647 。。。
那为什么不是 -2147483647 到 2147483648 呢?
因为int类型占4个byte, 就是32个bit 了, 而32个二进制位中最高位的那个一位是表示正负的。
所以只有31 个位来表示int 类型本身的大小了。
从 0000000 00000000 00000000 00000000 到 1111111 11111111 11111111 11111111
其中后面31个1 就是 2147483647 啊(2^31 - 1)
所以不算上最高位的符号位的话, 31位 共可以表示 2147483647 个 非负整数, 其中包括2147483646 个正数 和 1个0
而加上符号位后,可以表示负数了, 加上符号1后,2147483647 31位也可以公可以表示 2147483647 个 非正整数啊,
从10000000 00000000 00000000 00000000 到 11111111 11111111 11111111 11111111
问题来了 非正整数那个符号位是1 非负正数那个符号位是0
10000000 00000000 00000000 00000000 和 00000000 00000000 00000000 00000000
??
实际上负数在内存里是用二进制补码表示的(反码+1)
所以规定 00000000 00000000 00000000 00000000 是0
而 1开头的 2147483647 全部是负数
而 10000000 00000000 00000000 00000000 就用来表示最小的负数 -2147483648
所以符号位0开头的int类型整数 能表示 2147483646 个整数 和0
而符号位为1开头的int类型整数 能表示 2147483647 个负数
范围就是 -2147483648 到 2147483647 。。。
- int 类型的取值范围
- int类型取值范围
- 笔试题1:int类型的取值范围是什么?
- int/long/long long/double类型的取值范围
- java 中 int 类型的取值范围
- int类型取值范围由来
- int的取值范围
- int的取值范围
- int的取值范围
- 关于int类型取值范围的计算 以及为何16位int类型范围是- 32768 ~ 32767
- C语言中基本类型char、short、int、long等类型的取值范围
- C语言中基本类型char、short、int、long等类型的取值范围
- int long long 的取值范围
- 各种int的取值范围
- Java中int的取值范围
- 【知识】int的取值范围
- C语言int的取值范围
- Java中int的取值范围
- PGA管理和调整
- Oracle存储结构_文件
- c语言结构体介绍及用法
- Oracle 存储结构_表空间简介
- C语言 关于指针的格式化
- int 类型的取值范围
- Oracle 段区块 分配 (1)
- Oracle 段区块 分配 (2)
- 博客会被搬去csdn
- Oracle 的检查点队列 (checkpoint queue)
- C语言 利用malloc()和realloc()动态分配内存
- C语言 跨函数使用内存.
- 线性结构 -- 连续存储(数组), 1个简单的c语言代码实现.
- Web Api