You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用位运算符计算Java数据类型的最大值与最小值

用Java位运算符计算各数据类型的最大最小值

一、整数类型(byte/short/int/long)

Java的整数类型均采用补码存储,最高位为符号位:0表示正数,1表示负数。利用位运算符可以直接构造出最值的二进制位模式:

通用规则

对于n位有符号整数:

  • 最大值:符号位为0,其余所有位为1 → 可通过~(1 << (n-1))构造(1 << (n-1)得到最高位为1、其余为0的数,按位取反后符号位变0,其余位全1)
  • 最小值:符号位为1,其余所有位为0 → 可通过1 << (n-1)构造(补码中该值对应最小负数)

各类型示例

// byte(8位)
byte maxByte = (byte) ~(1 << 7);   // 127
byte minByte = (byte) (1 << 7);    // -128

// short(16位)
short maxShort = (short) ~(1 << 15); // 32767
short minShort = (short) (1 << 15);  // -32768

// int(32位)
int maxInt = ~(1 << 31); // 2147483647
int minInt = 1 << 31;    // -2147483648

// long(64位)
long maxLong = ~(1L << 63); // 9223372036854775807L
long minLong = 1L << 63;    // -9223372036854775808L

注意:byte/short类型的移位操作默认会提升为int类型,所以需要强转回对应类型。

二、浮点数类型(float/double)

Java的浮点数遵循IEEE 754标准,结构为「符号位+指数位+尾数位」,无法直接对float/double做位运算,需借助整数类型中转,通过Float.intBitsToFloat/Double.longBitsToDouble将整数的二进制位直接解析为浮点数。

各类型示例

// float(32位)
float maxFloat = Float.intBitsToFloat(0x7F7FFFFF); // 最大正浮点数
float minFloatNegative = Float.intBitsToFloat(0xFF7FFFFF); // 最小负浮点数(绝对值最大)
float minFloatPositive = Float.intBitsToFloat(0x00000001); // 最小正浮点数

// double(64位)
double maxDouble = Double.longBitsToDouble(0x7FEFFFFFFFFFFFFFL); // 最大正浮点数
double minDoubleNegative = Double.longBitsToDouble(0xFFEFFFFFFFFFFFFFL); // 最小负浮点数(绝对值最大)
double minDoublePositive = Double.longBitsToDouble(0x0000000000000001L); // 最小正浮点数

位模式说明

  • 最大正浮点数:符号位0,指数位全1,尾数位全1
  • 最小负浮点数:符号位1,指数位全1,尾数位全1
  • 最小正浮点数:符号位0,指数位全0,尾数位仅最低位为1

内容的提问来源于stack exchange,提问作者liamle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 10:30:43