C位運算分析及進製轉換

2021-07-11 19:02:37 字數 2710 閱讀 5443

作為c初學者,曾經的我在這個位運算和二進位制的轉換中始終搞不懂怎麼去準換,怎麼去搞懂。這裡把我掌握的方法給大家分享下

二進位制轉換成八進位制簡易的辦法,我們只需要記住0~7的二進位制。對二進位制從右向左計算。每隔3位計算

2進製8進製

0011

0102

0113

1004

1015

1106

1117

對二進位制從右向左,每3位進行截斷

100010100101

100 010 100 101 前面不足三位補充0

這樣我們就可以快速的進行計算了,上面這個結果得出來是:4245

八進位制轉換成二進位制也一樣的啦,倒推算就行了

2 to 8 example:

101010

001(2) ====> 521(8)

2641(8) ====> 010

110100

001(2)

二進位制轉換同八進位制、十六進製制的方法不同,不能用它們的方法來進行轉換

二進位制轉換成十進位制

1000101(2) ==> 1+2^6+1*2^2+1*2^0=64 + 4 + 1 = 69(10)

同理八進位制或者16進製制以及其他進製都可以按照這樣的方式去計算,只不過相對於這種方式,八進位制和十六進製制沒有一下說的方法簡便

十進位制轉二進位制

採用除2取餘,逆序排法

10 to 2 example:

56/2=28 == >0

28/2=14 == >0

14/2=7 == >0

7/2=3 ==> 1

3/2=1 ⇒ 1

1/2=0 ==>1

逆序排法:111000

2進製

16進製制

0001

10010

20011

30100

40101

50110

60111

71000

81001

91010

a1011

b1100

c1101

d1110

e1111f

這裡我們拆分乙個看下:

1000 1010 0101

拆分過後我們就很容易得出這個十六進製制:9a6

2 to 16 example:

1010 1010 1010(16) ==> aaa(2)

c5d2(16) ⇒ 1100 0101 1101 0010(16)

位運算,就是對乙個位元(bit)位進行操作。

c語言有六中位運算子

運算子說明&

按位與|

按位或^

按位異或~取反

<<

左移》右移

乙個位元位只有0或者1兩個取值,只有參與&(位與)運算的兩個位都為1時,結果才為1,否則為0。例如1&1為1,0&0為0,1&0為0

數值在記憶體中是以二進位制的形式中存在,7&8 可寫算式如下:

0000 0111 7

&0000 1001 8

0000 0001 = 1

參與或運算|的兩個二進位制位有乙個為1時,結果就為1,兩個都為0時結果才為0。例如1|1為1,0|0為0,1|0為1。

9|5可寫算式如下:

00001001 (9的二進位制)

|00000101 (5的二進位制)

00001101 (13的二進位制)

所以9|5=13。

按位或運算可以用來將某些二進位制位置1,而保留某些位

按位異或運算

參與異或運算^的兩個二進位制位不同時,結果為1,相同時結果為0。也就是說,0^1為1,0^0為0,1^1為0。

9^5可寫成算式如下:

00001001 (9的二進位制)

^00000101 (5的二進位制)

00001100 (12的二進位制)

所以9^5=12。

按位異或運算可以用來反轉某些二進位制位

取反運算子~為單目運算子,右結合性,作用是對參與運算的數的各二進位按位取反。例如 ~1為0,~0為1。

~9的運算為:

~0000000000001001

1111111111110110

所以~9=65526。

左移運算子《用來把運算元的各二進位全部左移若干位,高位丟棄,低位補0。例如:

a=9;

a<<3;

《左邊是要移位的運算元,右邊是要移動的位數。

上面的**表示把a的各二進位向左移動3位。a=00001001(9的二進位制),左移3位後為01001000(十進位制72)。

右移運算子》用來把運算元的各二進位全部右移若干位,低位丟棄,高位補0(或1)。例如:

a=9;

a>>3;

表示把a的各二進位向右移動3位。a=00001001(9的二進位制),右移3位後為00000001(十進位制1)。

需要注意的是,對於有符號數,在右移時,符號位將隨同移動。當為正數時,最高位補0,而為負數時,符號位為1,最高位是補0或是補1 取決於編譯器的規定。

位運算和進製轉換

位運算指的是對二進位制進行的計算處理。主要有 與 或 異或 求反 其特徵為 都是1的時候才是1 如 13 7 計算過程為 13的二進位制 1101 7的二進位制 0111 得到結果 0101 轉換成10進製則是5 計算過程為 1101 0111 按照或運算得到結果是 1111 轉化成10進製為 15...

位運算轉換二進位制 進製轉換

普通十進位制轉換二進位制 1.通過不斷 2 和 2 得到用 1 0表示的數存進陣列 但是得到的是倒序 2.將陣列裡面的值倒序輸出再存入新的陣列即可 其他進製轉換同理 但是這種方法複雜且 較長 includeint main int count1 0 for int i count 1 i 0 i f...

c語言 進製和位運算

一.進製 十進位制轉n進製 連除倒取餘.以 10 為例,不同進製的表示方法 十進位制 10 二進位制 0b1010 八進位制 010 十六進製制 0x10 int a 100 printf o a 如何輸出進製數 d 十進位制 o 八進位制 0x 十六進製制 位運算子 按位與 按位或 按位非 按位異...