java利用异或运算的性质,对几个字符_java位运算符详解

java利用异或运算的性质,对几个字符_java位运算符详解原标题:干货:Java异或运算符的使用方法做Java这么久,还真的从来没有用到过某些基础的Java知识。今天就遇到了一个:Java的异或运算^,这个小不点“^”就是Java的异或运算符,是不是有点小,再来个大点的看得清楚:真^假=真  假^真=真  假^假=假  真^真=假这四个是在网上copy的例子,但它却是说明了Java异或运算的基本法则,那就是:只要两个条件同时为真或假,其结果都为假(这里要…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

原标题:干货:Java异或运算符的使用方法

做Java这么久,还真的从来没有用到过某些基础的Java知识。今天就遇到了一个:Java的异或运算^,这个小不点“^”就是Java的异或运算符,是不是有点小,再来个大点的看得清楚:

真^假=真  假^真=真  假^假=假  真^真=假

这四个是在网上copy的例子,但它却是说明了Java异或运算的基本法则,那就是:只要两个条件同时为真或假,其结果都为假(这里要注意区别Java的与运算—其为真真为真,假假为假);但仅当两条件中一个为真,另一个为假时,结果为真(感觉有点叛逆哦?不合常理,不走寻常路)。但Java的异或运算还有一个前提那就是它都是以二进制数据为基础进行的运算。也就是说当我们在使用代码中使用到异或运算时,它都会先将两个条件进行转换,转换成二进制数据后,再进行运算,例如:

int a = 4^6;这里的4和6 都是int型数据,在进行运算时,4对应的二进制数为:100(0100);6对应的是:110(0110),这样实际的运算方程是:int a = 0100^0110;此时再来看:00=0;11=0;01=1;00=0;这样运算的结果就是:0010(这是二进制的数据),对应转换成十进制就是2.

ebd1ab491757401f85f667562cc34e76.png

这就是Java里面对于异或运算的内部运算机制。

下面看一个例子:

public class TestXOR{

public static void main(String[] args)

{

int i = 15, j = 2;

System.out.println(“i ^ j = ” + (i ^ j));

}

}

运行结果是:i ^ j = 13.

分析上面程序,i=15转成二进制是1111,j=2转成二进制是0010,根据异或的运算规则得到的是1101,转成十进制就是13.

利用这个规则我们可以灵活运用到某些算法。比如,假定有2K+1个数,其中有2k个相同,需要找出不相同的那个数,比如:2、3、4、4、3、5、6、6、5。我们利用异或运算符就可以这样写:

public class TestXOR{

public static void main(String[] args)

{

int[] array = {2,3,4,4,3,5,6,6,5};

int v = 0;

for (int i = 0;i < array.length;i++) {

v ^= array[i];

}

System.out.println(“只出现一次的数是:” + v);

}

}

结果是:只出现一次的数是2.

我们就是巧用异或运算符的规则,得出一个数和0异或还是自己,一个数和自己异或是0的原理。返回搜狐,查看更多

责任编辑:

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/185936.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Gerrit使用教程详解[通俗易懂]

    Gerrit使用教程详解[通俗易懂]个人觉得这几篇博客介绍挺详细的,收藏转发分享:1、gerrit使用教程(一)https://www.cnblogs.com/111testing/archive/2018/08/09/9450530.html2、git上传本地代码到远程仓库https://www.cnblogs.com/111testing/p/7663229.html3、gitlog查看提交历史https:/…

    2022年10月23日
    0
  • 微软的官方技术文档[通俗易懂]

    微软的官方技术文档[通俗易懂]https://docs.microsoft.com/zh-cn/dotnet/articles/csharp/language-reference/keywords/byte

    2022年8月1日
    1
  • ASI简单实现网络编程

    ASI简单实现网络编程

    2022年1月22日
    46
  • HTML5:移动端开发入门[通俗易懂]

    HTML5:移动端开发入门[通俗易懂]HTML5:移动端开发入门一、前言常见的移动端开发分为移动版网站和响应式设计。移动端开发可以让技术人员专注于移动端的页面优化,而无需在意桌面版的兼容,但页面一旦改动内容,维护成本就翻倍了;响应式设计让开发人员只需维护一份项目,节省开发和维护成本,不过缺点是需要做好移动端和桌面端的兼容,也十分考验页面设计。两种开发方式孰强孰弱,暂无定论,本博客主要探讨一下移动端开发的技巧。二、移动端开发技巧1.Viewport设置传统桌面端网站的显示窗口往往都是在1024X768的分

    2022年6月21日
    28
  • 发表回复

    您的邮箱地址不会被公开。 必填项已用 * 标注

    关注全栈程序员社区公众号