⑴ c語言將進行按位異或結
異或 相同為0 不同為1
轉為二進制
10101111
^
01111000
結果位
11010111
即D7
選A
⑵ 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^=b;b^=a;」這樣嗎,如果是的話,那麼
對無符號整數而言等價於如下語句:
temp=a;a^=b;b=temp;
意義在於,少用一個變數,節省空間
//PS: 按位計算對於計算機語言而言大同小異,我偷了個懶用了javascript來寫
⑷ 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
(4)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),這些法則與加法是相同的,只是不帶進位,所以異或常被認作不進位加法。
⑸ C語言的按位與、或、非、異或都什麼意思。有什麼用
這些是位操作運算符:參與運算的量,按二進制位進行運算。
在計算機中,數據都是以二進制數形式存放的,位運算就是指對存儲單元中二進制位的運算。C語言提供6種位運算符。
包括位與(&)、位或(|)、位非(~)、位異或(^)、左移(<<)、右移(>>)六種。
位運算符 & |~<< >> ∧ 按優先順序從高到低排列的順序是:
位運算符中求反運算「~「優先順序最高,而左移和右移相同,居於第二,接下來的順序是按位與 「&「、按位異或 「∧「和按位或 「|「。順序為~ << >> & ∧ | 。
(5)c語言中按位異或擴展閱讀:
例:設二進制數a是00101101 ,若通過異或運算a∧b 使a的高4位取反,低4位不變,則二進制數b是。
解析:異或運算常用來使特定位翻轉,只要使需翻轉的位與1進行異或操作就可以了,因為原數中值為1的位與1進行異或運算得0 ,原數中值為0的位與1進行異或運算結果得1。而與0進行異或的位將保持原值。異或運算還可用來交換兩個值,不用臨時變數。
如 int a=3 , b=4;,想將a與b的值互換,可用如下語句實現:
a=a∧b;
b=b∧a;
a=a∧b;
所以本題的答案為: 11110000 。
⑹ 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語言中按位異或和按位取反有什麼區別
先說一下布爾值的與、或、異或、反運算:
與運算,兩者都為真計算結果為真,反之為假:
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語言中的異或,也就是符號"^",是按位異或吧
把十進制的數換成二進制後,寫成你常用的加減的形式,也就是對齊。不相同時為1,同為0.
⑼ C語言中按位異或和按位取反什麼去區別
異或運算,兩者不同為真,反之為假:
1
^
1
=
0,1
^
0
=
1,0
^
1
=
1,0
^
0
=
0;
取反運算,
單目運算符
:
~1
=
0,~0
=
1;
以上例子
1
代表真,0
代表假,望採納謝謝