java中基本数据类型的最大值最小值理解

文章目录

    • 概要
    • 主要内容

概要

今天在复习java的Java基础常见面试题时对java中基本数据类型的上下限有了一些思考,接下来我会结合自身的理解进行讲述

主要内容

Java 中有 8 种基本数据类型,分别为:6 种数字类型:
4 种整数型:byte、short、int、long
2 种浮点型:float、double
1 种字符类型:char
1 种布尔型:boolean。
我们先单独来看int类型
java中int类型的包装类为Integer,我们来看一下它的源代码

public final class Integer extends Number
        implements Comparable<Integer>, Constable, ConstantDesc {
    /**
     * A constant holding the minimum value an {@code int} can
     * have, -231.
     */
    @Native public static final int   MIN_VALUE = 0x80000000;

    /**
     * A constant holding the maximum value an {@code int} can
     * have, 231-1.
     */
    @Native public static final int   MAX_VALUE = 0x7fffffff;

    /**
     * The {@code Class} instance representing the primitive type
     * {@code int}.
     *
     * @since   1.1
     */
    @SuppressWarnings("unchecked")
    public static final Class<Integer>  TYPE = (Class<Integer>) Class.getPrimitiveClass("int");

    /**
     * All possible chars for representing a number as a String
     */
    static final char[] digits = {
        '0' , '1' , '2' , '3' , '4' , '5' ,
        '6' , '7' , '8' , '9' , 'a' , 'b' ,
        'c' , 'd' , 'e' , 'f' , 'g' , 'h' ,
        'i' , 'j' , 'k' , 'l' , 'm' , 'n' ,
        'o' , 'p' , 'q' , 'r' , 's' , 't' ,
        'u' , 'v' , 'w' , 'x' , 'y' , 'z'
    };

我们可以通过Max_VALUE和MIN_VALUE轻易的获取到int类型的上下限
我们发现int类型的范围是-2147483648 ~ 2147483647
正数相对于负数减 1 了。这是为什么呢?这是因为在二进制补码表示法中,最高位是用来表示符号的(0 表示正数,1 表示负数),其余位表示数值部分。所以,如果我们要表示最大的正数,我们需要把除了最高位之外的所有位都设为 1。如果我们再加 1,就会导致溢出,变成一个负数。
而补码表示法中正数的补码等于其二进制表示也就是说int类型的最大值为01111111.。。。。等于2的31次方-1
而最小值为其绝对值的二进制表示法取反加1,最终可以获得的最小数即为10000.。。。。等于-2的31次方
如果仅仅是用第一位作为符号为,但是用普通的二进制表示法的话,对于正数来说,可以表示的最大数并没有变化,但是对于负数则变成了
-2的31次方-1,少表示了一个数
以上仅为个人理解,如果错误欢迎指出

你可能感兴趣的:(java,python,开发语言)