Java0xffffffff为什么表示为-1

int i = 0xffffffff;
System.out.println(i);    输出-1

上面的程序有个问题

  1. 为什么int i = 0xffffffff;没有报溢出错误,且输出为-1?

    因为0xffffffff实际是二进制,程序中任何十进制,八进制,16进制的数在计算机底层都是二进制,表示成 X进制只是为了让人看明白,所以0xffffffff在电脑中就是32个1,而不是2的32次方减1。光是有底层表示还不够,语言需要把底层表示解释为高层抽象。在java中,常数默认为int类型(32bits),32个1解释为int就是-1。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章