天天看點

計算機基礎知識_進制轉化          進制轉化 四.八進制轉化為2進制,二進制轉化為8進制 五.計算機中的加法(帶進位的或運算)六、減法原理乘法問題

156的十進制可以看做1*10^2 + 5*10^1  +   6*10^0

首先我們看一下156 ,平方,次方等等都是根據後面有多少位決定的,如果用計算機計算,則正好是156

33是一個八進制可以看做3*8^1+3*8^0 次方  換算出來就是10進制

如果你本身是x進制,那麼你的數字就看做  num * x^位數  比如我有一個16進制的數字,轉為10進制

16進制在計算機中表示方法: 1 2 3 4 5 6 7 8 9 a b c d e f 

a代表10  b.. c.. 依次增加

 C8  如果轉化為十進制則是  C * 16 ^1 + 8 * 16 ^0 則把C變為12去做

12 * 16 ^1 + 8 * 16 ^0 =  192 + 8 = 200 十進制的200 (任何數的0次方都是1)

既然一個n進制可以任意轉化為10進制,則10進制則可以任意轉化為n進制

思路:

  10進制轉n進制就是不斷÷這個數的進制數

例如:

  10進制的17 轉化為16 進制  17 / 16 = 1 ...1 結果是1,餘1,然後加起來 就是11

  23(10進制) 轉化為八進制 23 / 8 = 2 ...7 結果就是27 

這個比較簡單了,隻需要記住,4個二進制為對應一個16進制的一位

比如 1100 對應的16進制就是C 

0000  代表0

0001  代表1

0010  代表2

0011  代表3

0100  代表4

0101  代表5

0110  代表6

0111  代表7

1000  代表8

1001  代表9

1010  代表a

1011  代表b

1100  代表c

1101  代表d

1110  代表e

1111  代表f

給你一個16進制數,把它變為二進制,則可以對應上面的表拆分

比如A32

拆分為 A 3 2 對應的二進制

A : 1010

3:   0011

2:   0010 

這個需要注意一下,要把16進制的數字從右邊向左邊區分(4各一組)

1000110010

區分:

    0010 0011 0010 前邊因為10就剩2個了,是以不足4位,需要補零

對應16進制的表去對拼即可: 結果為 232(16進制的) (轉化為10進制則用第一種方式,任何進制轉化為10進制)

八進制和第三種16進制轉化為二進制和2進制互轉類似,隻不過都是3個一組了(16進制和2進制是4個一組)

表:

  000     0

  001     1

       010     2

  011     3

  100     4

  101     5

  110     6

  111     7

随便一個八進制轉為二進制:  33 (一個差分為3個)

3: 011 

3: 011

最終結果: 011011 如果滿足4為一組,則前邊補零,變為0001 1011

 C語言代碼實作:

最終的輸出結果為7

一步一步的推算

首先把3和4分别給函數add為參數

然後循環判斷

A^b(3^4)二進制位011 100 亦或是相同為0不同為真

011

^

100

111 結果是7

指派給wei

但是因為是加法,是以還要考慮進位的問題

是以

(3&4 )<<1 算是他的進位然後左移一位

& 他的運算符特點是一方為假則全部為假

000    最終他的進位是0

最後再把最終的結果指派給a

進位指派給b

如果b這個儲存進位的結果不是0的話,那麼就繼續循環,一直到進位不為0的時候才傳回結果a

減法運算的話就是求補運算

A-b可以換算為加法

A+(100h-b)-100h

其實就是求b的補集

任何一個數加上b的反碼其常量值都是1

按照自己的了解的話

A+(100-b)-100

a代入數字為3

b代入數字為4

那麼a+(100-4)-100

則結果為3+96-100 = -1 這樣轉化為加法就實作了減法

他的設計就是進位丢失

假設是101 那麼如果第一個1丢失了,那麼就是丢棄了100

二進制x2的n次方就往左邊<<多少位

按照自己的了解假設是10*5

那麼10的二進制是1010

5的二進制是0101

1010 大于0101

那麼就是左移一位<1 變成5了.

如果有錯誤,歡迎批評指正: 聯系方式Q:2510908331