按位与和异或运算符(Python中两个不常用,却重要的运算符)
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中两个不常用,却重要的运算符)相关推荐
- Python中字典取值常用的方法!
字典是Python中比较常见的数据类型之一,它是一种可变容器模型,可以存储任意数量的任意类型的数据,而且字典中的每个元素由一个键和一个值组成,键和值之间用冒号分隔.本文为大家介绍一下Python中字典 ...
- Python中的基本函数及其常用用法简析
分享Python中的基本函数及其常用用法简析,首先关于函数的解释函数是为了达到某种目的而采取的行为,函数是可重复使用的,用来实现某个单一功能或者功能片段的代码块,简单来说就是由一系列的程序语句组成的程 ...
- python列表去重函数_对python中两种列表元素去重函数性能的比较方法
测试函数: 第一种:list的set函数 第二种:{}.fromkeys().keys() 测试代码: #!/usr/bin/python #-*- coding:utf-8 -*- import t ...
- Python中numpy.linalg库常用函数
Python中numpy.linalg库常用函数 numpy.linalg Python中numpy.linalg库常用函数 简单记录所遇到的numpy库内置函数 矩阵与向量积 ①np.linalg. ...
- 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 ...
- Python中Button按钮组件常用的属性及参数设置
Python中Button按钮组件常用的属性及参数设置 本篇文章中小编给大家介绍Button按钮组件的相关常用的属性以及参数的设置. 一. 常用属性使用语法 变量=Button(父容器(根窗口),参数 ...
- Python中两个list取交集、并集、差集以及为字符串str添加、插入特定字符的操作总结
Python中两个list取交集.并集.差集以及为字符串str添加.插入特定字符的操作总结 Python中两个list取交集.并集.差集 为字符串str添加.插入特定字符的操作总结 Python中两个 ...
- 在python中二进制位取反运算如何进行_Python位运算符详解
Python 位运算按照数据在内存中的二进制位(Bit)进行操作,它一般用于底层开发(算法设计.驱动.图像处理.单片机等),在应用层开发(Web 开发.Linux 运维等)中并不常见.想加快学习进度, ...
- python中的数据类型和常用运算符
一. python中常见的数据类型 整数:任何时候运算都是精确的 浮点数:运算的时候,可能会有四舍五入 字符串:字符串是以单引号'或双引号"括起来的任意文本 同类型的可以用+号 或者 , 号 ...
最新文章
- CSS中关于清除浮动的问题
- 会刷编程竞赛题的AlphaCode来了!
- spark 写mysql 设置主键_Spark Sql 连接mysql
- vivo计算机隐藏游戏,vivo
- pat 乙级 1020 月饼(C++实现)
- T4生成实体和简单的CRUD操作
- k3 cloud 文件服务器搭建,k3cloud服务器推荐配置
- Python花式编程案例集锦(9):sorted()函数中消失的cmp参数
- 如何设置qq支持临时会话聊天
- python 道生一,一生二,二生三,三生万物
- 计算机和人类处理信息的过程,信息处理的一般过程
- flask html下拉列表,用Flask框架作两个关联式的下拉式选单,抓取资料库资料
- ssm报错:Invalid bound statement (not found): mapper.UserMapper.findAllUser
- 易基因|RRBS单碱基绘制580种动物的基因组规模DNA甲基化谱:Nature子刊
- [自动化] 如果电脑不会自己看网课,就应该用Python教会它
- 阿里云视频服务(视频边缘智能服务)接入流程
- 计算机操作系统-概述
- 人大金仓 日常命令 已解决
- 【应急响应】驱动人生供应链木马攻击2019.1.30变种木马分析
- 原生JDK网络编程之NIO篇
热门文章
- Tecohoo VD-206全高清视频会议摄像机
- Lake Shore350型低温温度控制器
- Python让Excel飞起来—批量处理行、列和单元格
- 二、Linux镜像软件的安装
- JavaWeb网上订餐管理系统|餐饮就餐订餐餐厅(含源码+论文+答辩PPT等)
- FL Studio教程之Gross Beat插件讲解
- 数据库设计:需求分析
- 删除eclipse的SVN/Subclipse插件
- [LOJ#6617][THUPC2019]摆家具(矩阵乘法 + 子集和变换)
- mysql自定义函数获取表中多个值的方法