當前位置:首頁 » 編程語言 » 按位異或怎麼算c語言
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

按位異或怎麼算c語言

發布時間: 2023-02-15 09:58:06

c語言位數算,按位異或.只知道按位異或原理 不知道這題怎麼做

mask=0x80000000;
str[i]=number&mask==0?'0':'1';

Ⅱ c語言中同或、異或怎麼表示

1、概念:參加運算的兩個對象,按二進制位進行「與」運算,負數按補碼形式參加按位與運算。

2、運算規則:0&0=0; 0&1=0;1&0=0;1&1=1;即:兩位同時為「1」,結果才為「1」,否則為0【有0則0】

例如:3&5=1,即0000 0011 & 0000 0101 = 0000 0001

3、「與運算」特殊用途:

(1)清零。如果想將一個單元清零,即使其全部二進制位為0,只要與一個各位都為零的數值相與,結果為零。

(2)取一個數中指定位。找一個數,對應X要取的位,該數的對應位為1,其餘位為零,此數與X進行「與運算」可以得到X中的指定位。

例:設X=10101110,取X的低4位,用 X & 0000 1111 = 0000 1110 即可得到;還可用來取X的2、4、6位。

二、按位或(|)

1、概念:參加運算的兩個對象按二進制位進行「或」運算,負數按補碼形式參加按位與運算。

2、運算規則:0|0=0;0|1=1;1|0=1;1|1=1;即 :參加運算的兩個對象只要有一個為1,其值為1【有1則1】

例如:3|5=7,即 0000 0011 | 0000 0101 = 0000 0111

3、「或運算」特殊作用:

(1)常用來對一個數據的某些位置1。找到一個數,對應X要置1的位,該數的對應位為1,其餘位為零。此數與X相或可使X中的某些位置1。

例:將X=10100000的低4位置1 ,用 X | 0000 1111 = 1010 1111即可得到。

三、異或運算(^)

1、概念:參加運算的兩個數據,按二進制位進行「異或」運算

2、運算規則:0^0=0;0^1=1;1^0=1;1^1=0;即:參加運算的兩個對象,如果兩個相應位為「異」(值不同),則該位結果為1,否則為0【同0異1】

例如:3^5=6,即0000 0011^0000 0101 = 0000 0110

3、「異或運算」特殊作用:

(1)使特定位翻轉 找一個數,對應X要翻轉的各位,該數的對應位為1,其餘位為零,此數與X對應位異或即可。

(2)與0相異或,保留原值 ,X ^ 0000 0000 = 1010 1110。

例:X=10101110,使X低4位翻轉,用X ^ 0000 1111 = 1010 0001即可得到。

(3)基於異或運算,不引用新變數交換兩個變數的值

a = a ^ b; b = a ^ b; a = a ^ b;

【同樣基於加減法的話有:a = a + b; b = a - b; a = a -b;】

四、不同長度的數據進行位運算

如果兩個不同長度的數據進行位運算時,系統會將二者按右端對齊,然後進行位運算。

以「與」運算為例說明如下:我們知道在C語言中long型佔4個位元組,int型佔2個位元組,如果一個long型數據與一個int型數據進行「與」運算,右端對齊後,左邊不足的位依下面三種情況補足,

(1)如果整型數據為正數,左邊補16個0。

(2)如果整型數據為負數,左邊補16個1。

(3)如果整形數據為無符號數,左邊也補16個0。

如:long a=123;int b=1;計算a & b。

如:long a=123;int b=-1;計算a & b。

如:long a=123;unsigned int b=1;計算a & b。

Ⅲ C語言里的按位異或運算符

1:「按位與」運算符(&)全1為1,有0則0。0&0=0,1&0=0,1&1=1
2:「按位或」運算符(|)有1則1,全0則0。0|0=0,1|0=1,
1|1=1
3:「異或」運算符(^)相同為0,不同為1。0^0=0,1^0=1,1^1=0

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

簡單說,c編程的時候輸入的都是十進制數字,但如果你要對二進制數字進行運算,就要用這種按位運算的符號。此前編譯程序先要把十進制變成二進制,比如int
x=67的二進制是這樣的。
67->00000000
00000000
00000000
00100011
比如:
&:有0則結果為0。
1&1=1,
其餘組合為0
比如67&1=1
|:有1則結果為1。
0|0=0,
其餘組合為1
比如67|1=67
^:異或。相反則為1
比如67^1=66
~取反:
1變0,0變1
比如67取反就變成了
11111111
11111111
11111111
11011100
也就是-66
>>:右移:
上面的就變成了00000000
00000000
00000000
00010001,也即33
<<:左移:上面的就變成了00000000
00000000
00000000
01000110,也即134

Ⅳ c語言異或操作

c語言異或加密實現的原理為,將任意值,與相同值兩次異或後,結果與原值相同。所以可以通過將源數據與一個固定的值(秘鑰key)異或後,得到密文,然後將密文再次與秘鑰異或,得到原文。這樣就實現了異或加密及解密。
c語言中的異或是一種按位操作的計算,其計算原理為,操作數對應位上的值相同,則結果位上值為0,否則為1.異或的運算符號為^,於是真值表如下:
0^0=0
0^1=1
1^0=1
1^1=0
這樣區分源數據和秘鑰值,有如下四種可能:
0^0=0
0^0=0
0^1=1
1^1=0
1^0=1
1^0=1
1^1=0
0^1=1
以上是將一個值,用另一個值連續異或兩次後的計算過程,可以看到,最終的值與原始值是相同的。這就是異或加密的基礎原理。

Ⅵ c語言按位異或

按位異或需要將異或雙方轉換成二進制數,如當a=5時,二進制為101,與0異或後結果為100,也就是b=4的二進制了。
異或時的規則是:逐位進行比較,相同為0(即1與1異或為0,0與0異或為0),不同為1(即0與1異或為1,1與0異或為1)。

Ⅶ 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語言中位異或怎樣理解呢

先講下一位異或,假設a、b都是一位,那麼如果a <> b,結果就是1,否則就是0。

再來看按位異或。按位異或就是把兩個二進制數,按每一位分別進行異或運算。

例子:
01011100
XOR
00110101
=
01101001

每一位都是對應的。

Ⅸ 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

(9)按位異或怎麼算c語言擴展閱讀:

異或,英文為exclusive OR,縮寫成xor異或(xor)是一個數學運算符。它應用於邏輯運算。異或的數學符號為「⊕」,計算機符號為「xor」。其運演算法則為:a⊕b = (¬a ∧ b) ∨ (a ∧¬b)

如果a、b兩個值不相同,則異或結果為1。如果a、b兩個值相同,異或結果為0。

異或也叫半加運算,其運演算法則相當於不帶進位的二進制加法:二進制下用1表示真,0表示假,則異或的運演算法則為:0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0(同為0,異為1),這些法則與加法是相同的,只是不帶進位,所以異或常被認作不進位加法。