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 ...