int數據類型是幾位的?爲什麼負數通過計算器和通過代碼轉化爲二進制的結果不同?

int數據是佔4個字節,每個字節佔8位,所以int類型是32位的。

例,int a = 123; 則得到~123是-124.

但123的二進制碼是:1111011補全後是:00000000 00000000 00000000 01111011

~123可得:11111111 11111111 11111111 10000100

把這個放進計算器中,通過二進制轉化爲10進製得到的是4294967172,不是-124,這是爲什麼呢?


因爲你的計算機是64位的!相當於你的數字默認類型是long型而非int !

64位的-124(即-124long)得到的二進制碼是:1111111111111111111111111111111111111111111111111111111110000100

32位的-124(即-124int)得到的二進制碼是:11111111 11111111 11111111 10000100

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