2022-03-06

位运算

0,:异或算法:异域中同位如果值相同(都是0或者都是1)则为0,不同(一个是0,一个是1)为1。

(主要用来去除重复,很方便)

异或运算法则:

a ^ b = b ^ a

a ^ b ^ c = a ^ (b ^ c) = (a ^ b) ^ c

d = a ^ b ^ c 可以推出 a = d ^ b ^ c

a ^ b ^ a = b

了解了异或运算后回到那道算法题目,给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次.找出那个只出现了一次的元素.在不知道使用异或运算时,头都大了,现在我们可以这样:

int[] nums= {2,2,3,4,4};

for(int i = 1;i< nums.length;i++){

nums[0] = nums[0]^nums[i];

}

System.out.println(nums[0]);

上面的代码中nums[0]的值就是此数组中唯一出现的值,最后的结果我们只要通过异或运算的特点来得知,比如上面的数组[2,2,3,4,4],异或运算是满足交换规则的,对于2^2^3^4^4这样的异或运算,我们换一下位置等价得到(2^2)^(4^4)^3,通过两个相同的数进行异或运算可以得到0,那最终就会是0^0^3,最后会得到3.

1.与运算符

与运算符用符号“&”表示,其使用规律如下:

两个操作数中位都为1,结果才为1,否则结果为0

2.或运算符

或运算符用符号“|”表示,其运算规律如下:

两个位只要有一个为1,那么结果就是1,否则就为0,

3.非运算符

非运算符用符号“~”表示,其运算规律如下:

如果位为0,结果是1,如果位为1,结果是0,

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 空间组学揭示肝脏巨噬细胞微环境的进化保守性与差异 Highlights 健康和肥胖小鼠和人肝脏的空间组学单细胞图谱...
    corrt阅读 2,942评论 0 3
  • Leetcode题库中,关于数组中元素出现次数的题目有以下几题,重点考察的是对运算符的运用,现在统一归纳,方便后续...
    风暴小狼阅读 181评论 0 1
  • Nat Biotech丨碱基编辑传感器库高通量识别癌症相关突变 原创珍奇图灵基因 收录于话题#前沿分子生物学技术 ...
    图灵基因阅读 432评论 0 0
  • 1、创建私有CA并进行证书申请。创建CA相关目录和文件 创建CA的私钥 给CA颁发自签名证书 用户生成私钥和证书申...
    sakurachen阅读 663评论 1 0
  • 十八单元 自动化持续继承 1.概念 1.持续集成:持续的将分支集成到主干 2.持续交付:持续将此版本提交给质量团队...
    小董小董阅读 500评论 0 0

友情链接更多精彩内容