一解释
按位运算符是把数字看作是二进制来进行计算的。 下表中变量 a 为 60,b 为 13,二进制格式如下:
代码语言:javascript复制a = 0011 1100 # 60的二进制
b = 0000 1101 # 13的二进制
-----------------
a&b = 0000 1100
a|b = 0011 1101
a^b = 0011 0001
~a = 1100 0011
&按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0(a & b) 输出结果 12 ,二进制解释: 0000 1100
|按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。(a | b) 输出结果 61 ,二进制解释: 0011 1101
^按位异或运算符:当两对应的二进位相异时,结果为1a ^ b) 输出结果 49 ,二进制解释: 0011 0001
~按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1 。~x 类似于 -x-1(~a ) 输出结果 -61 ,二进制解释: 1100 0011
在一个有符号二进制数的补码形式。<<左移动运算符:运算数的各二进位全部左移若干位,由<<右边的数字指定了移动的位数,高位丢弃,低位补0。a << 2 输出结果 240 ,二进制解释: 1111 0000>>右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,>>右边的数字指定了移动的位数a >> 2 输出结果 15 ,二进制解释: 0000 1111
二代码
代码语言:javascript复制 public static string ConvertHexToXor2(string hex,string xor)
{
string newstring = "";
for (int i = 0; i < hex.Length; i = 2)
{
string str = hex.Substring(i, 2);
if (xor != "")
{
newstring = (Convert.ToInt64(xor, 16) ^ Convert.ToInt64(str, 16)).ToString("X2");
}
else
{
xor = str;
}
}
return newstring;
}
三异或
1、异或(xor)是一个数学运算符。它应用于逻辑运算。
2、异或的数学符号为“⊕”,计算机符号为“xor”。其运算法则为:a⊕b = (¬a ∧ b) ∨ (a ∧¬b)
3、如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0