第十四届蓝桥杯集训——JavaC组第九篇——位运算符

举报
红目香薰 发表于 2022/12/13 19:45:10 2022/12/13
【摘要】 ​ ​编辑第十四届蓝桥杯集训——JavaC组第九篇——位运算符目录第十四届蓝桥杯集训——JavaC组第九篇——位运算符值交换异或值交换其它位移符号:这个稍微难度大一些,基础的有【&与、|或、^异或、<<左位移、>>右位移】。我们一个一个的来看。首先,我们学会了二进制是什么,那么我们这个二进制的核心就是二进制。值交换两个变量,一个x值是5,另外一个y值是7,我们需要通过自己的方式将x重新赋值成...

 编辑

第十四届蓝桥杯集训——JavaC组第九篇——位运算符


目录

第十四届蓝桥杯集训——JavaC组第九篇——位运算符

值交换

异或值交换

其它位移符号:




这个稍微难度大一些,基础的有【&与、|或、^异或、<<左位移、>>右位移】。

我们一个一个的来看。

首先,我们学会了二进制是什么,那么我们这个二进制的核心就是二进制。

值交换

两个变量,一个x值是5,另外一个y值是7,我们需要通过自己的方式将x重新赋值成7,而y赋值成5;

package com.item.action;

public class demo1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int x=5;
		int y=7;
		int c=0;
		c=x;
		x=y;
		y=c;
		System.out.println("x:"+x);
		System.out.println("y:"+y);
	}

}

这个案例我们通过第三方的变量进行交换至。

异或逻辑

异或结果
A 符号 B = result
Flase0 ^ Flase0 = False0
Flase0 ^ True1 = True1
True1 ^ Flase0 = True1
True1 ^ True1 = False0

异或值交换

但是我们还有更先进的方法,我们来通过异或符号来交换一遍:

package com.item.action;

public class demo1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int x = 5; // 二进制:101
		int y = 7; // 二进制:111
		x=x^y;
		y=x^y;
		x=x^y;
		System.out.println("x:"+x);
		System.out.println("y:"+y);
	}

}

结果:

x:7
y:5 

拆分过程我们来看看:

int x = 5; // 二进制:101
int y = 7; // 二进制:111
x=x^y;//101^111=010=2
y=x^y;//010^111=101=5
x=x^y;//010^101=111=7

其它位移符号:

下面我们来看一下其它的位移符号: 

int x = 5; // 二进制:101
int y = 7; // 二进制:111
System.out.println(x & y); // 101 & 111 = 101 = 5(十进制)
System.out.println(x | y); // 101 | 111 = 111 = 7(十进制)
System.out.println(x ^ y); // 101 ^ 111 = 010 = 2(十进制)
System.out.println(x << 1); // 101 << 1 = 1010 = 10(十进制)
System.out.println(x >> 1); // 101 >> 1 = 010 = 2(十进制)

编辑


【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。