作為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 十六進製制 位運算子 按位與 按位或 按位非 按位異...