C語言位運算對的疑問,C語言位運算裡這些怎麼用?

2021-03-03 20:28:59 字數 5640 閱讀 1905

1樓:聽不清啊

實際位操作時,都是按儲存型別的所有位進行的char: 8位

short: 16位

int: 32位

前面的 & | ^ 實際操作時也是按上述的位數進行的(至少是8位),只是寫出來時全部是0,所以就省略了。

因為取反後,0就變成了1,就不能省略了。

2樓:

所有位運算都是8個bit位來運算的,因為一個byte是最基本的單位

你說的& |也都是按照8位來運算的,只是不影響結果,因為前面的四位運算結果都是0,所以無用,取反則不一樣,0就變成1了

c語言位運算裡~、<<、>>、&、|、^、這些怎麼用?

3樓:與鯉

按位與 |    按位或 ^

按位異或 ~    取反 <<

左移 >>     右移<<

1. 按位與運算。按位與運算子"&"是雙目運算子。

其功能是參與運算的兩數各對應的二進位相與。只有對應的兩個二進位均為1時,結果位才為1 ,否則為0。參與運算的數以補碼方式出現。

2. 按位或運算。按位或運算子「|」是雙目運算子。

其功能是參與運算的兩數各對應的二進位相或。只要對應的二個二進位有一個為1時,結果位就為1。參與運算的兩個數均以補碼出現。

例如:9|5可寫算式如下: 00001001|00000101 00001101 (十進位制為13)可見9|5=13 main()

3. 按位異或運算。按位異或運算子「^」是雙目運算子。

其功能是參與運算的兩數各對應的二進位相異或,當兩對應的二進位相異時,結果為1。參與運算數仍以補碼出現,例如9^5可寫成算式如下: 00001001^00000101 00001100 (十進位制為12) main()。

5. 左移運算。左移運算子「<<」是雙目運算子。

其功能把「<< 」左邊的運算數的各二進位全部左移若干位,由「<<」右邊的數指定移動的位數, 高位丟棄,低位補0。例如: a<<4 指把a的各二進位向左移動4位。

如a=00000011(十進位制3),左移4位後為00110000(十進位制48)。

c語言位運算

4樓:

~取反,0取反是1,1取反是0

《是左移,比如1<次方

>>右移,類似左移,數值大小除以2的n次方&按位與,1與任意數等於任意數本身,0與任意數等於0,即1&x=x,0&x=0

|按位或,x|y中只要有一個1則結果為1

^按位異或,x^y相等則為0,不等則為1

所有數值必須轉換為二進位制數才能位運算,每一位數相對應運算

5樓:與鯉

按位與 |    按位或 ^

按位異或 ~    取反

<<左移 >>     右移<<

1. 按位與運算。按位與運算子"&"是雙目運算子。

其功能是參與運算的兩數各對應的二進位相與。只有對應的兩個二進位均為1時,結果位才為1 ,否則為0。參與運算的數以補碼方式出現。

2. 按位或運算。按位或運算子「|」是雙目運算子。

其功能是參與運算的兩數各對應的二進位相或。只要對應的二個二進位有一個為1時,結果位就為1。參與運算的兩個數均以補碼出現。

例如:9|5可寫算式如下: 00001001|00000101 00001101 (十進位制為13)可見9|5=13 main()

3. 按位異或運算。按位異或運算子「^」是雙目運算子。

其功能是參與運算的兩數各對應的二進位相異或,當兩對應的二進位相異時,結果為1。參與運算數仍以補碼出現,例如9^5可寫成算式如下: 00001001^00000101 00001100 (十進位制為12) main()。

5. 左移運算。左移運算子「<<」是雙目運算子。

其功能把「<< 」左邊的運算數的各二進位全部左移若干位,由「<<」右邊的數指定移動的位數, 高位丟棄,低位補0。例如: a<<4 指把a的各二進位向左移動4位。

如a=00000011(十進位制3),左移4位後為00110000(十進位制48)。

6樓:匿名使用者

p為整型變數,通過前面的運算,高8位為『a』(97),低八位為『b』(98);

c=(p & 0xff00) >> 8;

先執行括號內表示式,再進行右移位運算,最後賦值給cp & 0xff00 //低8位置0

>> 8 ,低8位移出,高8位到低8位,

因此 c = 'a' ,按整型輸出為97

7樓:

p=a; //p=97

p=(p<<8)|b; //97的16進位制是0x0000 0061,左移8位後變為0x0000 6100,b=98,對應的16進位制是0x0000 0062

//進行位或運算後,p變為0x0000 6162c=(p&0xff00)>>8;  //0x0000 6162 & 0x0000 ff00=0x0000 6100,然後右移八位,變成了0x0000 0061所以c=0x0000 0061,即10進位制97了。

8樓:匿名使用者

~是取反符號,比如數字2的二進位制數十10 取反後是01

<< >>是左移與右移符號,如 4<<1 相當於100左移一位 1000 得到8相反用4>>1就得到2

&符號是位與運算子,2個數做與運算,都是1時得到1,其他為0 ,如二進位制數1010 和1001做運算最後得到1000

|是位或運算,2個數運算只要有一個是1就得到1,如二進位制數1010和1001得到進過1011

^異或運算,相同為0不同為1 如二進位制數 1010和1001 得到0011

9樓:匿名使用者

char 和 int   可以大小相同   都是16個位元組初學的話,你要知道『a'可以直接看成數字97,『b'是98知識點不多    左移    補0   | 運算    0-16進位制的轉換

剩下的你要把這個過程拆分開來,一次一步的算,就簡單很多

10樓:匿名使用者

a&b 相同位的兩個數字都為1,則為1;若有一個不為1,則為0。

a|b 相同位只要一個為1即為1。

a ^ b 相同位不同則為1,相同則為0。

~a 取反

a << b 左移b位

a >> b右移b位

11樓:匿名使用者

大幾 不會是剛學吧 我大一 沒你這麼遠 每個 字母都代表一個數 a好像是97吧

12樓:柯夢月京驕

先把要進行運算的兩個數轉換成二進位制:

下面是「按位與」:--就是要兩個都是真才是真(1)010100

1011

1110

00-------------------010100

下面是「按位或」:--就是一個是真就可以了(1)010100

1011

1110

00----------------------111110

10------------------------------------這樣看起來符合我們的運算習慣。

13樓:貫梓夫昂雄

c語言是為描述系統而設計的,它的第一個應用就是unix作業系統的設計,因此必須具有低階語言的特點。指標運算和位運算就是其代表。計算機中的資訊以及控制訊號均是以二進位制碼的0、1的形式儲存和處理的。

每一個0或1稱為一個「位」(bit),8位構成一個位元組(byte)。在記憶體中,每一個位元組均有一個編號,稱為記憶體地址。

在以前的各章節中,都是將一個位元組(如字元型)和若干位元組(如整型、實型等)中的內容作為一個整體進行處理的(賦值、運算、i/o操作)。

位運算則是針對這些位元組中的若干位進行操作。這在系統軟體設計中和自動控制中是十分有用的。

14樓:滑映寒愈霽

&和|的關係

(1)若a=true

b=false

則:a&&b=false

a||b=true

(2)若a=false

a=true

a&&b=false

a||b=true

(3)若a=true

b=true

a&&b=true

a||b=true

(4)若a=false

b=false

a&&b=false

a||b=false

仔細想一下就明白了!

15樓:圭方方鬱方

就是二進位制邏輯運算。比如:

inta=1,

b=3;

a,b表示成2進位制數:a=

0000

0001b=

0000

0011a|

b=0000

0011a&

b=0000

0001

16樓:匿名使用者

一、位運算子c語言提供了六種位運算子:

& 按位與

| 按位或

^ 按位異或

~ 取反

<< 左移

>> 右移

1. 按位與運算 按位與運算子"&"是雙目運算子。其功能是參與運算的兩數各對應的二進位相與。

只有對應的兩個二進位均為1時,結果位才為1 ,否則為0。參與運算的數以補碼方式出現。

例如:9&5可寫算式如下: 00001001 (9的二進位制補碼)&00000101 (5的二進位制補碼) 00000001 (1的二進位制補碼)可見9&5=1。

按位與運算通常用來對某些位清0或保留某些位。例如把a 的高八位清 0 , 保留低八位, 可作 a&255 運算 ( 255 的二進位制數為0000000011111111)。

main()

2. 按位或運算 按位或運算子「|」是雙目運算子。其功能是參與運算的兩數各對應的二進位相或。只要對應的二個二進位有一個為1時,結果位就為1。參與運算的兩個數均以補碼出現。

例如:9|5可寫算式如下: 00001001|00000101

00001101 (十進位制為13)可見9|5=13

main()

3. 按位異或運算 按位異或運算子「^」是雙目運算子。其功能是參與運算的兩數各對應的二進位相異或,當兩對應的二進位相異時,結果為1。

參與運算數仍以補碼出現,例如9^5可寫成算式如下: 00001001^00000101 00001100 (十進位制為12)

main()

4. 求反運算 求反運算子~為單目運算子,具有右結合性。 其功能是對參與運算的數的各二進位按位求反。

例如~9的運算為: ~(0000000000001001)結果為:1111111111110110

5. 左移運算 左移運算子「<<」是雙目運算子。其功能把「<< 」左邊的運算數的各二進位全部左移若干位,由「<<」右邊的數指定移動的位數,

高位丟棄,低位補0。例如: a<>」是雙目運算子。其功能是把「>> 」左邊的運算數的各二進位全部右移若干位,「>>」右邊的數指定移動的位數。

例如:設 a=15,a>>2 表示把000001111右移為00000011(十進位制3)。 應該說明的是,對於有符號數,在右移時,符號位將隨同移動。

當為正數時, 最高位補0,而為負數時,符號位為1,最高位是補0或是補1 取決於編譯系統的規定。turbo c和很多系統規定為補1。

main()

請再看一例!

main()

C語言,位運算在解壓中的應用,C語言的位運算在實際操作中有什麼用

其實就一個作用,加快解壓速度,要知道位運算速度奇快 望採納,謝謝 c語言的位運算在實際操作中有什麼用 這個就要涉及計算機組成原理,也就是數字在計算機中具體如何表示了,比如9 4 36,9在計算機中用2進製表示,1001,就是這個1001連續加上4次,但是如果移位的話就僅僅移兩個位,1001向左移位變...

c語言按位與運算46輸出的值

4 5的值為1.這裡的1是表示真。因為4和5都是非0值。非0即為真。真真得真。所以結果為1 4 5的值為4。這裡4的二進位制是 100 5的二進位制是 101 按位與就是100 101 100 即十進位制為4 先化成二進位制,在進行與就可以了的。4 1 100取反 1 1 100 6 1 110取反...

C語言疑問

轉義字元一bai般格式為 加三位du八進位制數或者zhi 加兩位十六進位制數,也 dao就是 ddd 和 xhh 101 和 116 是轉回義字元,表示ascii碼分答別為八進位制101和八進位制116的字元,對應十進位制的65和78,也就是 a 和 n 特殊轉移字元有 b 退格 f 走紙換頁 n ...