美文网首页
Java中int的取值范围是怎么计算的

Java中int的取值范围是怎么计算的

作者: 望北8261 | 来源:发表于2020-03-26 03:55 被阅读0次

计算思路有很多更高级的,我这里说一种最死板的思路。
首先我们知道,Java中int占4个字节,也就是32位。32位是什么概念?直接看下面对应关系,简单粗暴,前提你要知道最高位是标志位,0为正数1为负数

max = 01111111 11111111 11111111 11111111
 ...
  4 = 00000000 00000000 00000000 00000100
  3 = 00000000 00000000 00000000 00000011
  2 = 00000000 00000000 00000000 00000010
  1 = 00000000 00000000 00000000 00000001
  0 = 00000000 00000000 00000000 00000000
 -1 = 11111111 11111111 11111111 11111111
 -2 = 11111111 11111111 11111111 11111110
 -3 = 11111111 11111111 11111111 11111101
 -4 = 11111111 11111111 11111111 11111100
 ...
min = 10000000 00000000 00000000 00000000

由上面我们可以知道int的取值范围就是 [10000000 00000000 00000000 00000000 , 01111111 11111111 11111111 11111111]
01111111 11111111 11111111 11111111转成十进制容易算,就是2的31次方减1,所以max=21474836487
那么10000000 00000000 00000000 00000000转成十进制是多少呢?先了解一下负数的十进制和二进制的转换。

负数十进制转二进制 - 取反加1

取反加1,很简单,比如-666转成二进制,就是11111111 11111111 11111101 01100110,如下:

// 首先正数666的二进制是
00000000 00000000 00000010 10011010
// 取反
11111111 11111111 11111101 01100101
// 加1
11111111 11111111 11111101 01100110
负数二进制转十进制 - 减1取反

减1取反,也很简单,比如11111111 11111111 11111100 10001000转成十进制,就是-888,如下:

// 二进制原数
11111111 11111111 11111100 10001000
// 减1
11111111 11111111 11111100 10000111
// 取反
00000000 00000000 00000011 01111000
// 转成十进制
888
那么原来的问题,10000000 00000000 00000000 00000000是多少呢
// 原负数
10000000 00000000 00000000 00000000
// 减1
01111111 11111111 11111111 11111111
// 取反
10000000 00000000 00000000 00000000
// 转成十进制
2147483648

所以10000000 00000000 00000000 00000000=-2147483648,
所以min=-2147483648,前面已经算出max=21474836487
所以int的取值范围就是[-2147483648,21474836487],也就是-2的31次方 到 2的31次方减1

相关文章

  • Java中int的取值范围是怎么计算的

    计算思路有很多更高级的,我这里说一种最死板的思路。首先我们知道,Java中int占4个字节,也就是32位。32位是...

  • 为什么int的最小值绝对值比最大值大1

    关于int取值范围的疑问 在Java中int是占4个字节的,意味着它是32位。同时int是有符号的,那就说它最高位...

  • 进制转换

    java中int型占4个字节, 一个字节8位,共计32位int型取值范围是[-2^31, +2^31-1]最大的数...

  • 返回json数据给前端精度丢失问题

    java中Long的取值范围:(-9223372036854774808~9223372036854774807)...

  • Java 中Byte 的取值范围

    基础概念一 位(bit) bit 表示二进制位,位是计算机内部数据存储最小单位,11010100是一个8位二进制数...

  • C# 溢出检测checked 与 unchecked

    概述   首先,我们看一下这些数据类型的取值范围,我们举int为例,它的取值范围是(-2147483648~214...

  • C语言基础

    练习 字母大小写转换 十进制转二进制 奇偶数 两个数交换 int取值范围 int的取值范围为: -231——231...

  • 数据类型

    面试被问到了int类型的取值范围当场母鸡当场懵*基础打脸最为致命正题:一个常识: 基本数据类型byte:Java中...

  • int float double 取值范围

    int 在32位平台上面是2^32 = 2147483647int 在64位平台上面是2^64 = 9223372...

  • 2019-08-15

    一、OC基本数据类型 计算一下他们的取值范围: 以int 为例:int所在4个字节 1Btye = 8bit。 共...

网友评论

      本文标题:Java中int的取值范围是怎么计算的

      本文链接:https://www.haomeiwen.com/subject/ofbzyhtx.html