今天看到一位大神的博客,深受感触.决定也发一篇博客,证明一下我还活着. 于是我翻看以前学习时做的一些笔记,整理了一下,得到了一个关于异或运算交换变量变量值的笔记. 首先来看下面三组表达式,看起来他们都能实现交换两个变量的值. a = a ^ b; b = a ^ b; a = a ^ b; a = a ^ (b = b ^ (a = a ^ b)); a ^= b ^= a ^= b; 可实际的情况是,前面2组表达式,在C.C++.Java中都能顺利完成变量值的交换.而第3组表达式,却只在C.C…
对于异或运算有这如下说明: 1^1=0 0^0=0 1^0=1 0^1=1 简单理解就是当两个书相同时结果为0,而两个数不同时异或的结果为1 可用于两个整数的交换,而不用去引入一个中间变量 #include<cstdio> #include<iostream> #include<algorithm> #include<cstring> using namespace std; int main() { int a,b; cin>>a>>…
位运算:二进制运算 Java的异或运算^ 真^假=真 假^真=真 假^假=假 真^真= 假,这四个是在网上copy的例子,真是1,假是0 但它却是说明了Java异或运算的基本法则,那就是:只要两个条件同时为真或假,其结果都为假(这里要注意区别 Java的与运算---其为真真为真,假假为假): 但仅当两条件中一个为真,另一个为假时,结果为真(感觉有点叛逆哦?不合常理,不走寻常路). 但 Java的异或运算还有一个前提那就是它都是以二进制数据为基础进行的运算. 也就是说当我们在使用代码中使用到异或运…
版权声明一:本文为博主原创文章,转载请附上原文出处链接和本声明.版权声明二:本网站的所有作品会及时更新,欢迎大家阅读后发表评论,以利作品的完善.版权声明三:对不遵守本声明或其他违法.恶意使用本网内容者,保留追究其法律责任的权利.本文链接:https://home.cnblogs.com/u/zak24/ Java中的「与运算 & 」 规则 :都为1时才为1,否则为0 即:两位同时为“1”,结果才为“1”,否则为0 例如:     public static void main(String ar…
本文记录了不使用中间变量交换2个变量的value,很多的网络留言说是直接异或运算就可以了,而且效率很高,是真的吗? 这里简单的说一下我的环境:Win7 32位,Qt creator 5.4.1 编译器MinGW4.9.2 32bit 调试器:GNU GDB 7.8 关于这个问题,网络上面有很多的解释,3种方法,我这里给比较一下各自的优缺点,然后简单分析一下汇编代码,分析代码如下: #include <stdio.h> void swap1(int &a,int &b) { in…
首先,异或运算是,每个位上的数不同为1,相同为0. 其次,对两个数值变量的值进行三次异或运算就等于是交换了两个变量的值. 例如: int a = 4; int b = 10; a = a ^ b; b = b ^ a; a = a ^ b; 之后的结果是: 进行位异或运算 a: 10 b: 4…
简单排序 选择排序 概念 首先,找到数组中最小的那个元素,其次,把它和数组的第一个元素交换位置(如果第一个元素就是最小的元素那么它就和自己交换).再次,在剩下的元素中找到最小的元素,将它与数组的第二个元素交换位置.如此往复,直到将整个数组排序.这种方法叫做选择排序,因为它在不断地选择剩余元素中地最小者. 代码实现 public static void SelectionSort(int[] arr){ if(arr==null||arr.length<2) return; //去除多余情况 in…
  //与运算 &  规则 :都为1时才为1        System.out.println( 7 & 9);        /*         *  7二进制 0111             *  9二进制 1001         * -----------          *        0001   ==1         * */                //或运算 | 规则:有一个为1,则为1        System.out.println(7 | 9);…
<1>.在了解位移之前,先了解一下正数和负数的二进制表示形式以及关系:举例15和-15:15 的原码: 00000000 00000000 00000000 00001111     补码: 11111111 11111111 11111111 11110000                 +1 = -15的原码:11111111 11111111 11111111 11110001负数的原码即为:正数的原码取反,再加1.<2>位移操作:(只针对 int类型的数据有效,java…
Problem Description 有个叫"猪头帮"的国家,采用一种简单的文法加密,他们所用的语言里面只有大写字母,没有其他任何字符:现在还知道他们加密的方法是:只用一个大写字母和原文进行异或运算生成密文.请你帮忙解开. Input 有若干组,每组输入有2行,第一行整数N表示有N个密文,接着一行有N个整数分别表示N个密文. Output 输出仅有大写字母组成的原文. Sample Input 30 17 6 9 8 3 0 1 6 7 4 5 10 11 8 9 14 15 12…