這裏我們按照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