【Java】基本类型之int(五)


    • int 数据类型是32位、有符号的以二进制补码表示的整数;
    • 最小值是 -2,147,483,648(-2^31)
    • 最大值是 2,147,483,647(2^31 - 1)
    • 一般地整型变量默认为 int 类型;
    • 默认值是 0 ;

例子:int a = 100000, int b = -200000。


下面有一道面试题,可以参考一番:下列代码最终输出结果是多少


    public static void main(String[] args) {
        int num = 2147483647;
        num += 2L;
        System.out.println(num);
    }

A、-2147483648
B、2147483649
C、-2147483647
D、0

答案是多少呢?如果你不知道int类型的取值范围,有不少小伙伴肯定选择B,因为我就属于无知的一类。基础没有学好,一秒钟不带思考的……答错。正确答案是C:-2147483647

下面解释一下原因:

由于计算机中采用二进制存储数据,2147483647是int存储的最大正数,其+2L,
相当于二进制右侧第二位+1,等于0,向左进1,导致后续的二进制统一+1=0进1,
最终最高位0+1=1变为负数,因为右侧第一位未动为1,则最终结果是最高位和最低位为1,其余都为0,
负数的二进制采用补码形式计算(最高位不变,其余按位取反,
相当于0代表正数1计算,同样1相当正数0计算,符号是负数)



  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值