JavaSE7基础 使用位运算异或 进行两个变量的数值交换

jdk版本  :jdk-7u72-windows-i586
系统     :Windows7
编辑器   :Notepad++ v7.4.2
注意事项 :博文内容仅供参考,不可用于其他用途。

代码

class Demo{
	public static void main(String[] args){
		int a=10;
		int b=20;

		//一般来讲,把这两个数交换可以申请一个中间变量temp
		//在高深一点的话,可以建立方程组
		//然而,在视频教程中老师 却是这样做的。。。
		a = a ^ b;
		b = a ^ b;// b = a ^ b ^ b;=a
		a = a ^ b;// a = a ^ b ^ a;=b
		//数学结合编程,有趣。
		System.out.println("a:"+a+"b:"+b);
	}
}

编译与运行

——————————————————————————————————————————
Java,优秀,值得努力学习。
学习资源:黑马程序员_Java基础视频-深入浅出精华版/*来自黑马云课堂,网上可以找到*/
如果您觉得博文内容有可以优化的地方,请留下评论,我会认真思考的。

时间: 2024-12-15 07:15:44

JavaSE7基础 使用位运算异或 进行两个变量的数值交换的相关文章

杭电 2095 find your present (2)【位运算 异或】

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2095 解题思路:因为只有我们要求的那个数出现的次数为奇数,所以可以用位运算来做,两次异或同一个数最后结果不变,那么就可以知道异或运算相当于过滤掉了出现次数为偶数的数,最后只留下了唯一的那一个出现次数为奇数的数. 反思:位运算好陌生,好好学. #include<stdio.h> int main() { int n; long int a; while(scanf("%d",&a

位运算 - 异或求和

异或求和 Problem's Link: http://acm.xmu.edu.cn/JudgeOnline/problem.php?id=1254 Mean: Description 给你2个区间[A,B]和[C,D],现在只要求你求出区间[A,B]和[C,D]内任意2个整数异或后的和,因为答案可能会很大,你只需将结果%mod即可. For(i:A→B) For(j:C→D) Sum += (i^j); Input 输入第一行为T(T<=15),表示测试的数据组数,第2行到T+1行,每行5个数

Java 基础 之 位运算

http://www.verejava.com/?id=16992602784016 public class Operation5 { public static void main(String[] args) { //位运算 /* 包括: 与 &, 或 |, 取反 ~, 异或 ^ 带符号左移<<, 带符号右移 >>, 无符号右移 >>> 1. & 就是二进制位如果都是1则为1,否则为0 2. | 就是二进制位如果都是0则为0,否则为1 3.

位运算 - 异或

用与或非来表示异或 通俗的说异或,即指两值相异时,取真值,否则为假. 以下是其真值表 | x^y |(y) 0 | 1 | |(x)-- | --: | :---: | | 0 | 0 | 1 | | 1 | 1 | 0 | 那么如何用与或非实现呢? 既然是相异,当然首先想到 x & ~y,看看它的真值表 | x & ~y | 0 | 1 | | ----- | --: | :---: | | 0 | 0 | 0 | | 1 | 1 | 0 | 有一个位子有点不一样,如果换一下 x 和 y

位运算-异或运算-只出现一次的数字-给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素

给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次.找出那个只出现了一次的元素. 示例: 输入: [2,2,1] 输出: 1 输入: [4,1,2,1,2] 输出: 4 GO: func singleNumber(nums []int) int { var num int for i := 0; i < len(nums); i++ { num = num ^ nums[i]; } return num; } PHP: class Solution { /** * @par

JavaSE7基础 交换两个变量的数值 巧妙的代码

jdk版本  :jdk-7u72-windows-i586系统     :Windows7编辑器   :Notepad++ v7.4.2注意事项 :博文内容仅供参考,不可用于其他用途. 代码 class Demo{ public static void main(String[] args){ int a=10; int b=20; //一句话搞定 两数的交换 b=(a+b)-(a=b) ; /* 运算顺序 1 (a+b) 2 (a=b) 3 30-20 */ //一行代码呀,还是提醒一下大家

java面试之位运算(如何不通过第三方变量交换两个数字,效率最高的乘法运算)

class Demo2_Operator { public static void main(String[] args) { /* * 位异或运算符的特点 * ^的特点:一个数据对另一个数据位异或两次,该数本身不变. */ //System.out.println(5 ^ 10 ^ 10); //System.out.println(5 ^ 10 ^ 5); /* * 请自己实现两个整数变量的交换(不需要定义第三方变量) * 注意:以后讲课的过程中,我没有明确指定数据的类型,默认int类型.

JavaScript基础 === 全等于 比较运算符 既比较两个变量的值,也比较两个变量的类型

镇场诗: 清心感悟智慧语,不着世间名与利.学水处下纳百川,舍尽贡高我慢意. 学有小成返哺根,愿铸一良心博客.诚心于此写经验,愿见文者得启发.------------------------------------------ code: 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=ut

基础位运算基本原理和应用

微信公众号 位运算是编程语言的基础,在看源码的时候会看到很多位运算代码,但是在项目代码中很少会看到位运算.因为应用代码中,有很多判断和计算都可以直接用数值的判断和计算完成,没有必要去用位运算,以至于这些基础的东西慢慢用的越来越少,慢慢也就忘了.导致的一个结果就是看源代码很费力,因为大量的位运算逻辑,看不懂.作为程序员感觉数据位运算是非常必要,有点如下: 看源码时能够更好的理解 位运算更接近计算机的习惯,执行的效率会更高 装逼利器,在项目中使用位运算,体现逼格 N种基本的位运算 位运算 -- 与运