通過移位獲取int最大值

這裏我們按照32位系統來講:
操作符號 << 表示左移
1左移0位 二進制下就是對應的 01 十進制即1 理解爲2的0次方
1左移1位 二進制下就是對應的 10 十進制即2 理解爲2的1次方

1左移31位 二進制下就是對應的 1後面31個0 十進制下是int最小的值。
這裏爲什麼是負數呢,下面就詳細講解下:
32位操作系統中 32位表示最大的數,但是最高位是符號位,0代表正數,1代表負數。
所以如果說整數最大的數就是 0 111111…11,如果再進一位則是最小值了即(1000…000)。
因爲再通過移位獲取有符號最大的int值時 int max = (1 <<31) - 1;

這裏需要額外講一下 計算機中 正數是用原碼錶示,負數是用補碼錶示。
補碼就是源碼除了符號位全部取反+1。

舉個例子說下:
7 二進制爲 0000 0111 操作系統中存放就是用0000 0111存放。
-7 二進制源碼 1000 0111 對應的反碼就是 1111 1000 對應的補碼就是 1111 1001

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