天天看點

判斷作業系統是16位還是32位

法一:利用sizeof

可以使用sizeof計算int的位元組長度來判斷是32位還是16位。

32位機器下:sizeof(int) = 4;16位機器下:sizeof(int) = 2

但是實際中可能64位的機器sizeof(int)也是4位元組,因為很多時候是編譯器決定要占用幾個位元組

法二:利用最大值

1. 機器位數不同則表示的數字的最大值是不同的。

    32位機器下int的最大值為2147483647,16位機器下int的最大值是32767

2. 我們可以利用最大值是否溢出情況來判斷

    定義一個變量num指派32768,如果是16位機器這個時候超過了int最大值變成了-32768,如果是32位機器不會超過

法三:對0取反

1. 32位機器下無符号整型的數值範圍是[0,4294967295],16位機器下無符号整型的範圍是[0,65535]

2. 0的二進制是所有位都是0

    32位下對0取反的結果是所有位都是1,如果把這個數指派給一個無符号整型變量num,則num值為4294967295

    16位下對0取反的結果是所有位都是1,如果把這個數指派給一個無符号整型變量num,則num值為65535

3. 利用對0取反後的結果指派給無符号整型變量來判斷值是否大于65535即可

繼續閱讀