位运算中的异或运算

参与运算的两个值,如果两个相应的bit位相同,则结果为0,否则为1

char a1 = ‘十‘, a2 = ‘点‘, a3 = ‘进‘, a4 = ‘攻‘;
            char secret = ‘8‘;
            a1 = (char)(a1 ^ secret);
            a2 = (char)(a2 ^ secret);
            a3 = (char)(a3 ^ secret);
            a4 = (char)(a4 ^ secret);
            Console.WriteLine("密文:" + a1 + a2 + a3 + a4);

a1 = (char)(a1 ^ secret);
            a2 = (char)(a2 ^ secret);
            a3 = (char)(a3 ^ secret);
            a4 = (char)(a4 ^ secret);

Console.WriteLine("原文:" + a1 + a2 + a3 + a4);

时间: 2025-01-15 08:22:15

位运算中的异或运算的相关文章

二进制和位运算中的异或

1.给出一个问题:给你一个整形数组,这个数组中除了一个数字仅仅出现一次外,其它数字都仅仅出现两次,求出那个仅仅出现一次的数字? 要求:时间复杂度为O(n) , 空间复杂度为O(1). 这个题目的难点在于空间复杂度的限制. 解法:一个数出现两个,两个数同样.而相等两个数异或的值为0 . 所以.我们仅仅须要把整个数组的数都异或一遍,我们就能得到仅仅出现了一次的那个数字 <span style="font-size:18px;">int get_one_num(int num[]

[PHP][位转换积累]之异或运算的简单加密应用

异或的符号是^.按位异或运算, 对等长二进制模式按位或二进制数的每一位执行逻辑按位异或操作. 操作的结果是如果某位不同则该位为1, 否则该位为0. xor运算的逆运算是它本身,也就是说两次异或同一个数最后结果不变,即(a xor b) xor b = a.xor运算可以用于简单的加密,比如我想对我MM说1314520,但怕别人知道,于是双方约定拿我的生日19880516作为密钥.1314520 xor 19880516 = 20665500,我就把20665500告诉MM.MM再次计算20665

关于位运算中左移和右移运算的问题

根据我之前的学习知识, <<   和   >>  运算的规则如下: <<:左移运算:就是把当前这个二进制数向左移动多少位,低位空出的补零.高位移出的舍弃 >>:右移运算:就是把当前这个二进制数向右移动多少位,高位空出的来,原来最高位是什么,就补什么,低位移除的舍弃. 看下面的问题: public class Demo { public static void main(String[] args) { int a = 123; int b = a >&

使用异或运算对数据及文件进行加密处理,附软件及源码

前几天写了一篇文章是在C语言中使用异或运算交换两个任意类型变量,其基础为使用^交换两个整数的算法: a ^= b; b ^= a; a ^= b; 如果你看明白这个算法,就会发现这样的规律:一个数异或另一个数两次后,该数保持不变.即: c = a^b; c = c^b; c == a; 这一规律就是使用异或运算对数据及文件进行加密处理的基本原理. 那就先贴下加密算法的代码: bool XorEncrypt(void* bufPtr, unsigned int bufSize, const cha

异或运算的作用

1.异或运算 异或,英文为exclusive OR,或缩写成xor. 异或(xor)是一个数学运算符.它应用于逻辑运算.异或的数学符号为"⊕",计算机符号为"xor".其运算法则为: a⊕b = (?a ∧ b) ∨ (a ∧?b). 如果a.b两个值不相同,则异或结果为1.如果a.b两个值相同,异或结果为0. 2.异或运算符号 在C和C++中,异或运算不使用xor表示,而是使用"^"符号,比如计算a和b的异或结果表达式为:a ^ b. 3.异或

php位运算 与 或 异或 取反

<?php /** php中有4个位运算,分别是&与 |或 ^异或 ~取反 & 两位全为1,结果为1 | 有一位为1,结果为1 ^ 一个为0,一个为1,结果为1 ~ 取反0->1,1->0 1.二进制的最高位是符号位,0表示正数,1表示负数. 2.正数的原码,反码,补码都一样. 3.负数的反码=它的原码符号位不变,其它位取反(0->1,1->0). 4.负数的补码=它的反码+1. 5.0的反码,补码都是0. 6.php没有无符号数,换言之,php中的数都是有符

位运算之异或运算

位运算 位运算就是基于整数的二进制表示进行的运算.理解位运算首先要理解二进制.位运算总共只有5种运算:与(&).或(|).异或(^).左移(<<).右移(>>). 异或运算 维基百科中对「异或」的解释: 在逻辑学中,逻辑算符异或(exclusive or)是对两个运算元的一种逻辑析取类型,符号为 XOR 或 EOR 或 ⊕(编程语言中常用^).但与一般的逻辑或不同,异或算符的值为真仅当两个运算元中恰有一个的值为真,而另外一个的值为非真.转化为命题,就是:"两者的值

使用异或运算实现中两个变量互换的方法

按位异或运算可以在不引入临时变量的情况下实现两个变量值得互换. int main() {     int a = 10;     int b = 12;     cout<<"a="<<a<<";"<<"b="<<b<<endl;     a = a^b;                                            //异或运算     b = a^

java中与运算,或运算,异或运算,取反运算

//与运算 &  规则 :都为1时才为1        System.out.println( 7 & 9);        /*         *  7二进制 0111             *  9二进制 1001         * -----------          *        0001   ==1         * */                //或运算 | 规则:有一个为1,则为1        System.out.println(7 | 9);