本文目錄一覽:
- 1、C語言中按位與(&)運算符是什麼意思
- 2、C語言問題,按位與、按位或、按位異或、按位取反,解釋下。
- 3、C語言中按位或,與,非是怎麼用的,怎麼運算?
- 4、C語言中按位運算和按字節運算,怎麼理解這個抽象意思?
- 5、C語言中“按位運算符”是什麼意思?
- 6、C語言中什麼是按位或運算
C語言中按位與(&)運算符是什麼意思
是將二進制數按照位的對應相與,得到一個新的二進制數。1與0為0;1與1為1;0與0為0。
分析如下:
就是二進制的每一位相與。
比如:1010 0011 0000 1111,結果為0000 0011。也就是與上0相當於把那位數清0,與上1相當於把那位保留。
擴展資料:
1、按位與運算符””是雙目運算符。 其功能是參與運算的兩數各對應的二進位相與。只有對應的兩個二進位均為1時,結果位才為1 ,否則為0。參與運算的數以補碼方式出現。
例如:95可寫算式如下: 00001001 (9的二進制補碼)00000101 (5的二進制補碼) 00000001 (1的二進制補碼)可見95=1。 按位與運算通常用來對某些位清0或保留某些位。例如把a 的高八位清 0 , 保留低八位, 可作 a255 運算 ( 255 的二進制數為11111111)。
參考資料:百度百科:位運算符
C語言問題,按位與、按位或、按位異或、按位取反,解釋下。
先說一下布爾值的與、或、異或、反運算:
與運算,兩者都為真計算結果為真,反之為假:
1 1 = 1,1 0 = 0,0 1 = 0,0 0 = 0;
或運算,至少其一都為真計算結果為真,反之為假:
1 | 1 = 1,1 | 0 = 1,0 | 1 = 1,0 | 0 = 0;
異或運算,兩者不同為真,反之為假:
1 ^ 1 = 0,1 ^ 0 = 1,0 ^ 1 = 1,0 ^ 0 = 0;
取反運算,單目運算符:
~1 = 0,~0 = 1;
以上例子 1 代表真,0 代表假。
按位運算就是將二進制位的每一位進行如上計算。
如 2 | 5,轉換為二進制(以 1 字節 8 位為例):
00000010 | 00000101,每個二進制位分別進行或運算後得:
00000111 即 7。雖然 7 = 5 + 2 但不代表 2 | 5 = 2 + 5。
如:2 | 6 = 6,5 | 6 = 7,2 | 4 | 5 | 6 | 7 = 7。
同理,按位與運算 2 5 的結果為 0:
00000010 00000101 = 00000000
按位與運算 2 6 的結果為 2(二進制 00000010):
00000010 00000110 = 00000010。
同樣也能算出 2 ^ 6 的結果為 4(二進制 00000101):
00000010 ^ 00000110 = 00000100。
取反運算 ~00000110 = 11111001。
當然,對一個數字進行取反運算結果是多少,還與該類型是有符號還是無符號,佔用的字節大小等有關。上面的例子只是以一個字節為例進行說明。
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語言中按位運算和按字節運算,怎麼理解這個抽象意思?
舉個例子吧,
按位運算,比如數字4,二進制是00000100,
位運算,左移1位,二進制變成了00001000,變成8了,這就是位運算。
字節運算,忘記了,百度下吧,很多的
C語言中“按位運算符”是什麼意思?
位於好比34 3 其二進制為00000011 4其二進制為00000100 34= 0(二進制00000000)00=0,01=0,11=1
|位或 1|1=1,1|0=1,0|0=0
^位異或1^1=0,1^1=0,1^0=1,0^1=1
~按位反 好比3其二進制為00000011 反一下為11111100
左移如32 ,3 其二進制為00000011 向左移2個變為00000000 其十進制為0
右移 跟左移一樣的原理
C語言中什麼是按位或運算
位運算是在二進制層面上進行的運算
位或就是在兩個二進制上進行按位的或運算
像普通的邏輯運算一樣 兩個里有一個為真就返回真(邏輯真 就是1 邏輯假就是0)
比如兩個十進制數 5 和 3 進行位或運算
把他們轉換為二進制
5的二進制是 0101
3的二進制是 0011
他們按位或的結果是0111 轉換到十進制就是0+4+2+1 是7
原創文章,作者:VSIR,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/141826.html