tft每日頭條

 > 生活

 > int能不能自動轉型為double

int能不能自動轉型為double

生活 更新时间:2024-08-06 05:13:01

廢話不多說,上題:

int能不能自動轉型為double(程序遠每日一題-int類型)1

解析:

首先,跑一下程序,看看結果。

int能不能自動轉型為double(程序遠每日一題-int類型)2

是不是很神奇,兩個正數相加變成了負數,再來看看

-2147483648減1,竟然變成了2147483647,正數!!

int能不能自動轉型為double(程序遠每日一題-int類型)3

原因如下:

在計算機系統中,數值一律用補碼來表示(存儲)。

主要原因:使用補碼,可以将版符号位和其它位統一處理權;同時,減法也可按加法來處理。另外,兩個用補碼表示的數相加時,如果最高位(符号位)有進位,則進位被舍棄。

(我們拿32位int型來講,首位是符号位,0表示正數,1表示負數,後面31位用來表示數值)

1.正數的補碼和原碼相同。

2.負數的補碼是對其原碼逐位取反,但符号位除外;然後整個數加1。

比如 -1這個數

原碼:1000 0000, 0000 0000, 0000 0000, 0000 0001

取反:1111 1111, 1111 1111, 1111 1111, 1111 1110

加1 :1111 1111, 1111 1111, 1111 1111, 1111 1111

在一般的電腦中,int占用4字節,32比特,數據範圍為-2147483648~2147483647[-2^31~2^31-1]

2147483647加1時,會變成-2147483648(物極必反),加2則為-2147483647

所以在int的最大值和最小值周圍做加減操作要小心。

最後留一道類似的題,大家看看結果是啥,可以留言說明原因:

public static void main(String[] args) {

int num=2147483647;

long x=num 2;

System.out.println(num);

}

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved