計算機進製理解

2021-07-04 16:39:16 字數 4369 閱讀 7190

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位最高二進位制可以用來表示一位十六...

計算機知識 進製轉換

一 進製計數制的基本概念 將數字符號按序排列成數字,並遵照某種由低位到高位進製的方法進行計數,來表示數值的方式,稱作進製計數制。比如,我們常用的是十進位計數制,簡稱十進位制 就是按照 逢十進一 的原則進行計數的。進製計數制的表示主要包含三個基本要素 數字 基數和位權。數字是指數碼在乙個數中所處的位置...