1.進製表示
int a = 10; // 十進位制
int a = 0b10; // 二進位制 : 0b或0b標識
int a = 010; // 八進位制 : 0標識
int a = 0x10; // 十六進製制 : 0x或者0x標識
2.進製輸出表示
printf("%i", a); // 十進位制輸出
printf("%o", a); // 八進位制輸出
printf("%x", a); // 十六進製制輸出
3.十進位制轉二進位制
規律:十進位制除以2取餘,倒序讀取
4.二進位制轉十進位制
規律:轉換原理:乘以
2的冪數
(冪數從0開始
), 然後相加
5.二進位制轉八進位制
規律: 三個二進位制代表乙個八進位制位,只需要將3個二進位制位轉為十進位制,之後再將所有的結果連線起來
6.二進位制轉十六進製制
規律:四個二進位制位代表乙個十六進製制位,只需要將4個二進位制位轉為十進位制,之後再將所有的結果連線起來
7.二進位制的原始碼/ 反碼/ 補碼
二進位制的第一位是二進位制的符號位,如果該位是0代表這個書是乙個正數,如果該位是1代表這個數是乙個負數
正數的原始碼反碼補碼都是一樣的,三碼合一
二進位制的最高位我們稱之為符號位
如果符號位是
0代表是乙個正數,
如果符號位是
1代表是乙個負數
10000000 00000000 00000000 00001100 (-12
的原碼)
11111111 11111111 11111111 11110011(
反碼,
符號位不變其它位取反)
11111111 11111111 11111111 11110011
+00000000 00000000 00000000 00000001
_____________________________________________
11111111 11111111 11111111 11110100(
補碼,
反碼+1)
結論:無論正數負數在記憶體中儲存的都是補碼
11111111 11111111 11111111 11110101 (補碼)
-00000000 00000000 00000000 00000001 (-1)
_____________________________________________
11111111 11111111 11111111 11110100 (反碼)
10000000 00000000 00000000 00001011
負數反碼 : 最高位不變,其他位取反
負數補碼 : 負數的反碼+1
8.位運算(二進位制運算) /*
& 按位與 : 一假則假,任何數和1相&得到的結果還是那個數
| 按位或 : 一真則真
^ 按位異或 : 不相同為1,相同為0;
^ 規律 : 1.異或的結果和參與運算的順序沒有關係
2.相同的兩個數異或等於0
3.任何乙個數異或上0結果不變
4.任何乙個數異或乙個數兩次,結果不變
~ 取反 : 0變1,1變0
~90000 0000 0000 0000 0000 0000 0000 1001
~1111 1111 1111 1111 1111 1111 1111 0110 (補碼)
0000 0000 0000 0000 0000 0000 0000 0001
______________________________________________
1111 1111 1111 1111 1111 1111 1111 0101 (反碼)
1000 0000 0000 0000 0000 0000 0000 1010
9.左移(<>)
左移(<
注意點 : 由於左移運算,被移動的書的最高位會被拋棄(移除),所以左移有可能會改變乙個數的政正負性
右移(>>) : 右移就是用右移的數除以2的移動次冪
9 >> 1 == 9 / 2(1) = 4
1.進製表示
int a = 10; // 十進位制
int a = 0b10; // 二進位制 : 0b或0b標識
int a = 010; // 八進位制 : 0標識
int a = 0x10; // 十六進製制 : 0x或者0x標識
2.進製輸出表示
printf("%i", a); // 十進位制輸出
printf("%o", a); // 八進位制輸出
printf("%x", a); // 十六進製制輸出
3.十進位制轉二進位制
規律:十進位制除以2取餘,倒序讀取
4.二進位制轉十進位制
規律:轉換原理:乘以
2的冪數
(冪數從0開始
), 然後相加
5.二進位制轉八進位制
規律: 三個二進位制代表乙個八進位制位,只需要將3個二進位制位轉為十進位制,之後再將所有的結果連線起來
6.二進位制轉十六進製制
規律:四個二進位制位代表乙個十六進製制位,只需要將4個二進位制位轉為十進位制,之後再將所有的結果連線起來
7.二進位制的原始碼/ 反碼/ 補碼
二進位制的第一位是二進位制的符號位,如果該位是0代表這個書是乙個正數,如果該位是1代表這個數是乙個負數
正數的原始碼反碼補碼都是一樣的,三碼合一
二進位制的最高位我們稱之為符號位
如果符號位是
0代表是乙個正數,
如果符號位是
1代表是乙個負數
10000000 00000000 00000000 00001100 (-12
的原碼)
11111111 11111111 11111111 11110011(
反碼,
符號位不變其它位取反)
11111111 11111111 11111111 11110011
+00000000 00000000 00000000 00000001
_____________________________________________
11111111 11111111 11111111 11110100(
補碼,
反碼+1)
結論:無論正數負數在記憶體中儲存的都是補碼
11111111 11111111 11111111 11110101 (補碼)
-00000000 00000000 00000000 00000001 (-1)
_____________________________________________
11111111 11111111 11111111 11110100 (反碼)
10000000 00000000 00000000 00001011
負數反碼 : 最高位不變,其他位取反
負數補碼 : 負數的反碼+1
8.位運算(二進位制運算) /*
& 按位與 : 一假則假,任何數和1相&得到的結果還是那個數
| 按位或 : 一真則真
^ 按位異或 : 不相同為1,相同為0;
^ 規律 : 1.異或的結果和參與運算的順序沒有關係
2.相同的兩個數異或等於0
3.任何乙個數異或上0結果不變
4.任何乙個數異或乙個數兩次,結果不變
~ 取反 : 0變1,1變0
~90000 0000 0000 0000 0000 0000 0000 1001
~1111 1111 1111 1111 1111 1111 1111 0110 (補碼)
0000 0000 0000 0000 0000 0000 0000 0001
______________________________________________
1111 1111 1111 1111 1111 1111 1111 0101 (反碼)
9.左移(<>)
左移(<
注意點 : 由於左移運算,被移動的書的最高位會被拋棄(移除),所以左移有可能會改變乙個數的政正負性
右移(>>) : 右移就是用右移的數除以2的移動次冪
計算機進製和計算
執行中的程式都儲存在記憶體和暫存器裡面。並且計算機做不了減法。如果需要使用減法的話,計算機會加上被減數的負數。負數在計算機內的是以補碼的形式儲存的。在補碼中1000代表的不是0,而是這個長度能代表的最小的負數。二進位制和十進位制的區別在於二進位制是逢二進一,十進位制是逢十進一。比如0011在二進位制...
計算機進製轉換
一 計算機只認識0和1,二進位制。二 2進製轉換成 8進製 和 16進製制,如下圖 二進位制 八進位制 研究上圖發現,3位最高二進位制可以用來表示一位八進位制。所以,將二進位制分解每3位,不夠前面補0,然後每3位轉換為10進製,順序排列即可。二進位制 十六進製制 4位最高二進位制可以用來表示一位十六...
計算機知識 進製轉換
一 進製計數制的基本概念 將數字符號按序排列成數字,並遵照某種由低位到高位進製的方法進行計數,來表示數值的方式,稱作進製計數制。比如,我們常用的是十進位計數制,簡稱十進位制 就是按照 逢十進一 的原則進行計數的。進製計數制的表示主要包含三個基本要素 數字 基數和位權。數字是指數碼在乙個數中所處的位置...