⑴ 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
代表假,望采纳谢谢