Python中两个不常用,却重要的运算符

按位与 和 异或 运算符

**&按位与运算符:**转化为二进制,每一位分别进行运算,每一位相同为1,不同为0

**^异或运算符:**0和任何数都是变成那个数(二进制),任何数和自己都会变为0(二进制)

而两个数字直接进行异或,就是转为两个二进制数字进行运算,具体结果要看运算(每一位都异或,相同为0,不同为1,和按位与运算规则正好相反!)

注意:字符数组进行异或操作之前要先进行转码,转为ascii码(js中使用charCodeAt方法)

字符串进行异或操作之前要先split为字符数组,然后再进行转码,转为ascii码

算法例题

一个数组中只有一个数是单独出现的,其他的都是成对出现的,请找出这个数。

大家首先想到把这个数组遍历一遍,然后进行各种操作,但是这里推荐使用一种效率更高的方法——把数

组中所有元素都异或一遍,最后得到的结果就是那个单独出现的数字。

例如数组元素:1 2 4 2 1。

1^2 = 3 (0001 ^ 0010 = 0011)
3^4 = 7 (0011 ^ 0100 = 0111)
7^2 = 5 (0111 ^ 0010 = 0101)
5^1 = 4 (0101 ^ 0001 = 0100)

最后结果为4

代码:

#include<stdio.h>
#include<windows.h>
int main()
{int a[] = { 1, 2, 3, 4, 5, 4, 3, 2, 1 };int len = sizeof(a) / sizeof(a[0]);int i=1;for (; i < len; i++){a[0] ^= a[i];}printf("多余的数是%d\n", a[0]);system("pause");return 0;
}

理解:因为任何数异或自己都会变为0,而0异或任何数都会变成那个数

那我们在运算时,可以把异或得到的结果当成total,那么当total再次遇到一样的元素就会减去这个元素,从而相当于没有处理过这个元素

那么没有被成对处理的元素就会成为最后的输出值!

按位与和异或运算符(Python中两个不常用,却重要的运算符)相关推荐

  1. Python中字典取值常用的方法!

    字典是Python中比较常见的数据类型之一,它是一种可变容器模型,可以存储任意数量的任意类型的数据,而且字典中的每个元素由一个键和一个值组成,键和值之间用冒号分隔.本文为大家介绍一下Python中字典 ...

  2. Python中的基本函数及其常用用法简析

    分享Python中的基本函数及其常用用法简析,首先关于函数的解释函数是为了达到某种目的而采取的行为,函数是可重复使用的,用来实现某个单一功能或者功能片段的代码块,简单来说就是由一系列的程序语句组成的程 ...

  3. python列表去重函数_对python中两种列表元素去重函数性能的比较方法

    测试函数: 第一种:list的set函数 第二种:{}.fromkeys().keys() 测试代码: #!/usr/bin/python #-*- coding:utf-8 -*- import t ...

  4. Python中numpy.linalg库常用函数

    Python中numpy.linalg库常用函数 numpy.linalg Python中numpy.linalg库常用函数 简单记录所遇到的numpy库内置函数 矩阵与向量积 ①np.linalg. ...

  5. python 两个dict合并,Python 中两个字典(dict)合并_python dict 合并_python 两个dict合并...

    Python 中两个字典(dict)合并_python dict 合并_python 两个dict合并 dict1={1:[1,11,111],2:[2,22,222]} dict2={3:[3,33 ...

  6. Python中Button按钮组件常用的属性及参数设置

    Python中Button按钮组件常用的属性及参数设置 本篇文章中小编给大家介绍Button按钮组件的相关常用的属性以及参数的设置. 一. 常用属性使用语法 变量=Button(父容器(根窗口),参数 ...

  7. Python中两个list取交集、并集、差集以及为字符串str添加、插入特定字符的操作总结

    Python中两个list取交集.并集.差集以及为字符串str添加.插入特定字符的操作总结 Python中两个list取交集.并集.差集 为字符串str添加.插入特定字符的操作总结 Python中两个 ...

  8. 在python中二进制位取反运算如何进行_Python位运算符详解

    Python 位运算按照数据在内存中的二进制位(Bit)进行操作,它一般用于底层开发(算法设计.驱动.图像处理.单片机等),在应用层开发(Web 开发.Linux 运维等)中并不常见.想加快学习进度, ...

  9. python中的数据类型和常用运算符

    一. python中常见的数据类型 整数:任何时候运算都是精确的 浮点数:运算的时候,可能会有四舍五入 字符串:字符串是以单引号'或双引号"括起来的任意文本 同类型的可以用+号 或者 , 号 ...

最新文章

  1. CSS中关于清除浮动的问题
  2. 会刷编程竞赛题的AlphaCode来了!
  3. spark 写mysql 设置主键_Spark Sql 连接mysql
  4. vivo计算机隐藏游戏,vivo
  5. pat 乙级 1020 月饼(C++实现)
  6. T4生成实体和简单的CRUD操作
  7. k3 cloud 文件服务器搭建,k3cloud服务器推荐配置
  8. Python花式编程案例集锦(9):sorted()函数中消失的cmp参数
  9. 如何设置qq支持临时会话聊天
  10. python 道生一,一生二,二生三,三生万物
  11. 计算机和人类处理信息的过程,信息处理的一般过程
  12. flask html下拉列表,用Flask框架作两个关联式的下拉式选单,抓取资料库资料
  13. ssm报错:Invalid bound statement (not found): mapper.UserMapper.findAllUser
  14. 易基因|RRBS单碱基绘制580种动物的基因组规模DNA甲基化谱:Nature子刊
  15. [自动化] 如果电脑不会自己看网课,就应该用Python教会它
  16. 阿里云视频服务(视频边缘智能服务)接入流程
  17. 计算机操作系统-概述
  18. 人大金仓 日常命令 已解决
  19. 【应急响应】驱动人生供应链木马攻击2019.1.30变种木马分析
  20. 原生JDK网络编程之NIO篇

热门文章

  1. Tecohoo VD-206全高清视频会议摄像机
  2. Lake Shore350型低温温度控制器
  3. Python让Excel飞起来—批量处理行、列和单元格
  4. 二、Linux镜像软件的安装
  5. JavaWeb网上订餐管理系统|餐饮就餐订餐餐厅(含源码+论文+答辩PPT等)
  6. FL Studio教程之Gross Beat插件讲解
  7. 数据库设计:需求分析
  8. 删除eclipse的SVN/Subclipse插件
  9. [LOJ#6617][THUPC2019]摆家具(矩阵乘法 + 子集和变换)
  10. mysql自定义函数获取表中多个值的方法