當前位置:首頁 » 編程語言 » c語言按位或

c語言按位或

發布時間: 2022-01-11 05:41:54

A. c語言里的按位或是怎麼算的

有一個常識需求了解一下。整型數在內存中是以補碼形式表示的,如下式:
15 = 00001111
-9 = 11110111‬
-----------------------------
11111111 = (-1)
|是把15和-9兩個補碼按位作「或」運算,結果是一個全1的數(也是補碼形式),從補碼知識就知道這個數是-1

B. C語言中按位或,與,非是怎麼用的,怎麼運算

位運算符
C提供了六種位運算運算符;這些運算符可能只允許整型操作數,即char、short、int和long,無論signed或者unsigned。
&
按位AND
|
按位OR
^
按位異或
<<
左移
>>
右移
~
求反(一元運算)
按位與操作&通常用於掩去某些位,比如
n
=
n
&
0177;
使得n中除了低7位的各位為0。
按位或操作|用於打開某些位:
x
=
x
|
SET_ON;
使得x的某些SET_ON與相對的位變為1。
按位異或操作^使得當兩個操作數的某位不一樣時置該位為1,相同時置0。
應該區分位操作符&、|與邏輯操作符&&、||,後者從左到右的評價一個真值。比如,如果x為1、y為2,那麼x
&
y為0,而x
&&
y為1。
移位運算符<<和>>將左側的操作數左移或者右移右操作數給定的數目,右操作數必須非負。因此x
<<
2將x的值向左移動兩位,用0填充空位;這相當於乘4。右移一個無符號數會用0進行填充。右移一個帶符號數在某些機器上會用符號位進行填充(「算數移位」)而在其他機器上會用0進行填充(「邏輯移位」)。
單目運算符~對一個整數求反;即將每一個1的位變為0,或者相反。比如
x
=
x
&
~077
將x的後六位置0。注意x
&
~077的值取決於字長,因此比如如果假設x是16位數那麼就是x
&
0177700。這種簡易型式並不會造成額外開銷,因為~077是一個常數表達式,可以在編譯階段被計算。
作為一個使用位操作的實例,考慮函數getbits(x,p,n)。它返回以p位置開始的n位x值。我們假設0位在最右邊,n和p是正數。例如,getbits(x,4,3)返回右面的4、3、2位。
/*
getbits:
返回從位置p開始的n位
*/
unsigned
getbits(unsigned
x,
int
p,
int
n)
{
return
(x
>>
(p+1-n))
&
~(~0
<<
n);
}
表達式x
>>
(p+1-n)將需要的域移動到字的右側。~0是全1;將其左移n為並在最右側填入0;用~使得最右側n個1成為掩碼。

C. C語言中什麼是按位或運算

位運算是在二進制層面上進行的運算
位或就是在兩個二進制上進行按位的或運算
像普通的邏輯運算一樣 兩個里有一個為真就返回真(邏輯真 就是1 邏輯假就是0)
比如兩個十進制數 5 和 3 進行位或運算
把他們轉換為二進制
5的二進制是 0101
3的二進制是 0011
他們按位或的結果是0111 轉換到十進制就是0+4+2+1 是7

D. c語言的按位運算符怎麼操作!

位運算

在很多系統程序中常要求在位(bit)一級進行運算或處理。C語言提供了位運算的功能, 這使得C語言也能像匯編語言一樣用來編寫系統程序。

一、位運算符C語言提供了六種位運算符:

& 按位與
| 按位或
^ 按位異或
~ 取反
<< 左移
>> 右移

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

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

按位與運算通常用來對某些位清0或保留某些位。例如把a 的高八位清 0 , 保留低八位, 可作 a&255 運算 ( 255 的二進制數為0000000011111111)。
main(){
int a=9,b=5,c;
c=a&b;
printf("a=%d\nb=%d\nc=%d\n",a,b,c);
}

2. 按位或運算 按位或運算符「|」是雙目運算符。其功能是參與運算的兩數各對應的二進位相或。只要對應的二個二進位有一個為1時,結果位就為1。參與運算的兩個數均以補碼出現。
例如:9|5可寫算式如下: 00001001|00000101
00001101 (十進制為13)可見9|5=13
main(){
int a=9,b=5,c;
c=a|b;
printf("a=%d\nb=%d\nc=%d\n",a,b,c);
}

3. 按位異或運算 按位異或運算符「^」是雙目運算符。其功能是參與運算的兩數各對應的二進位相異或,當兩對應的二進位相異時,結果為1。參與運算數仍以補碼出現,例如9^5可寫成算式如下: 00001001^00000101 00001100 (十進制為12)
main(){
int a=9;
a=a^15;
printf("a=%d\n",a);
}

4. 求反運算 求反運算符~為單目運算符,具有右結合性。 其功能是對參與運算的數的各二進位按位求反。例如~9的運算為: ~(0000000000001001)結果為:1111111111110110

5. 左移運算 左移運算符「<<」是雙目運算符。其功能把「<< 」左邊的運算數的各二進位全部左移若干位,由「<<」右邊的數指定移動的位數,
高位丟棄,低位補0。例如: a<<4 指把a的各二進位向左移動4位。如a=00000011(十進制3),左移4位後為00110000(十進制48)。6. 右移運算右移運算符「>>」是雙目運算符。其功能是把「>> 」左邊的運算數的各二進位全部右移若干位,「>>」右邊的數指定移動的位數。
例如:設 a=15,a>>2 表示把000001111右移為00000011(十進制3)。應該說明的是,對於有符號數,在右移時,符號位將隨同移動。當為正數時, 最高位補0,而為負數時,符號位為1,最高位是補0或是補1 取決於編譯系統的規定。Turbo C和很多系統規定為補1。
main(){
unsigned a,b;
printf("input a number: ");
scanf("%d",&a);
b=a>>5;
b=b&15;
printf("a=%d\tb=%d\n",a,b);
}
請再看一例!
main(){
char a='a',b='b';
int p,c,d;
p=a;
p=(p<<8)|b;
d=p&0xff;
c=(p&0xff00)>>8;
printf("a=%d\nb=%d\nc=%d\nd=%d\n",a,b,c,d);
}

E. C語言中按位與(&)運算符是什麼意思

位運算符就是直接對整數在內存中的二進制位進行操作運算。比如,&&運算本來是一個邏輯運算符,但整數與整數之間可以用&進行運算。舉個例子,6的二進制是110,11的二進制是1011,那麼6 & 11的結果就是2,它是二進制對應位進行邏輯運算的結果(0表示False,1表示True,空位都當0處理)。
C語言提供了六種按位運算符:& 按位與| 按位或^ 按位異或~ 取反<< 左移>> 右移

也就是與上0相當於把那位數清0,與上1相當於把那位保留。

F. C語言中按位與(&)運算符是什麼意思

是將二進制數按照位的對應相與,得到一個新的二進制數。1與0為0;1與1為1;0與0為0。

分析如下:

就是二進制的每一位相與。

比如:1010 0011& 0000 1111,結果為0000 0011。也就是與上0相當於把那位數清0,與上1相當於把那位保留。

(6)c語言按位或擴展閱讀

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

例如:9&5可寫算式如下: 00001001 (9的二進制補碼)&00000101 (5的二進制補碼) 00000001 (1的二進制補碼)可見9&5=1。 按位與運算通常用來對某些位清0或保留某些位。例如把a 的高八位清 0 , 保留低八位, 可作 a&255 運算 ( 255 的二進制數為11111111)。

G. c語言中按位或|

這里涉及到的是位操作。
首先你需要了解內存中的數字存儲形式(二進制)。這里的a是一個標識符,用於存儲標記。具體而言,a是一個八個比特長的變數。比如0b00000000,0b00001110等等。用十六進制可以簡寫為0x00, 0x0E等等(這里兩個例子沒有任何含義)
在C語言中「<<」表示移位操作,比如0b00000001左移3位,就會變成0b00001000;左移2位就是0b00000100;等等。
然後你這里沒有給出digitalRead()函數的返回類型,我認為是0或1。在這種情況下,0寫成8位二進制是0b00000000,左移任何位都是0,如果是1的話,左移x位表示把從右往左數第x+1位變成1,比如:1<<3表示0b00001000,從右至左第4位變成1。
接下來,你有4個digitalRead函數,但是你想同時關心4個返回值。怎麼辦呢?我把第x個返回值放在從右往左數第x位上。比如0b00000110,表示第二、三個返回值是1,剩下兩個返回值是0。那麼你按上面的移位操作,可以得到這樣4個數:
0b 0000 0000 (返回值是0)
0b 0000 0100 (返回值是1)
0b 0000 0010 (返回值是1)
0b 0000 0000 (返回值是0)
按位進行「或」操作。「或」操作你肯定明白,有1就是1,沒1才是0
所以根據結果可以知道4個返回值是怎麼樣的。於是在switch語句中的返回值表明,如果是0x00(表示4個返回值是0),或是0x0F(4個返回值都是1)(F是4個1),則進行某種操作。
不知道明白了沒?

H. c語言按位異或什麼意思

按位異或,其操作符為^,形式為
a^b
計算時,根據操作數a和b每位的值,計算結果,當a,b的對應位上值相同時,結果的該位上值為0,否則值為1。

char a = 0x12, b = 0x34;
a^b
= 0x12 ^ 0x34
= B0001 0010 ^ B0011 0100
= B0010 0110
=0x26

I. C語言的a|b是什麼意思什麼是按位或

舉個例子 數字 1 轉換成二進制的8位數據就是 00000001
數字3 轉換成 二進制就是 00000011
1與3(1&3) 就是把 對應的位想與(0&0為0,1&0為0,1&1為1)
結果為 00000001
1或3(1|3)就是把 對應的位想或(0|0為0,1|0為1,1|1為1)
結果為 00000011

J. c語言中按位與。。按位或什麼意思

位運算符C語言提供了六種位運算符:

& 按位與
| 按位或
^ 按位異或
~ 取反
<< 左移
>> 右移

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

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

熱點內容
安卓上哪裡下大型游戲 發布:2024-12-23 15:10:58 瀏覽:189
明日之後目前適用於什麼配置 發布:2024-12-23 14:56:09 瀏覽:56
php全形半形 發布:2024-12-23 14:55:17 瀏覽:829
手機上傳助手 發布:2024-12-23 14:55:14 瀏覽:733
什麼樣的主機配置吃雞開全效 發布:2024-12-23 14:55:13 瀏覽:830
安卓我的世界114版本有什麼 發布:2024-12-23 14:42:17 瀏覽:711
vbox源碼 發布:2024-12-23 14:41:32 瀏覽:279
詩經是怎麼存儲 發布:2024-12-23 14:41:29 瀏覽:660
屏蔽視頻廣告腳本 發布:2024-12-23 14:41:24 瀏覽:420
php解析pdf 發布:2024-12-23 14:40:01 瀏覽:819