python 位运算 笔记

起因, 目的:

位运算,令我头疼的地方。算法题里面也是经常见到。

位运算。

  1. 按位或,OR, | , 只要有一个为1, 结果就是1,否则为0
  2. 按位异或,XOR, ^, 2个数不同,结果为1, 否则为0,
    • 可以判断2个数的奇偶性是否相同。
    • 如果2个数的奇偶性相同,结果0
    • 如果2个数的奇偶性不同,结果1
  3. 按位与, AND, &, 都为1, 结果为1
  4. 按位取反,NOT, ~, 把1变为0, 把0变为1

技巧

  1. n & 1, 判断奇偶性.

    • 如果n是奇数,则结果为 1
    • 如果n是偶数,则结果为 0
  2. n >> 1, 右移一位,

    • 相当于除以2之后的整数部分, 即 n//2. 如n=10,则n>>1=5.
  3. n & (n - 1),把 n 的二进制中,最后一个出现的 1 改写成 0。

  4. 移位运算,能大大加速2的n次方运算。

    • 3 << 5 = 3 * 2 ** 5 = 96

异或 运算的基础知识:

概念理解:

  1. 异或,英文为 exclusive OR,缩写成xor, python3: a^b, 3^5
  2. 异或, 满足加法结合律和交换律
  3. 异或, 也叫半加运算, 相当于不带进位的二进制加法
  4. 不是这个就是那个。“我明天要么去北京,要么去上海”
  5. 异或的可逆运算, 本质上还是一个结合律
    49 ^ 213 ^ 213 -> 49 ^ (213 ^ 213) -> 49 ^ 0 -> 49

定律:

  1. 如果有 a^b=c, 必有 a^c=b, 也必然有 b^c=a
  2. if a !=b: a^b=1, if a=b: a^b = 0
  3. a ^ a = 0 a ^ 0 = a # 任何数与 0 异或,都等于它自身。
  4. abc = bca = cba, 这里的交换律是解题的关键。
  5. 一句话总结:
    1. 789 = 879 = 978 = 6,
    2. 其中, 7^8 = 15, 15^9=6
    3. 这个 15 就是中间的一个 中转站。
位运算
  1. 位运算的一个好处是可以节省内存,也许还有其他好处。需要再查查看。
  2. 60 << 2 = 240
    左移动位运算 运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,
    高位丢弃,低位补0。

老哥留步,支持一下。

请求支持

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/448006.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一文介绍SQL标准1986~2023的演变

SQL标准1986年制定第一版&#xff0c;到最新的2023版&#xff0c;已经有38年的历史&#xff0c;现在依然是计算机非常活跃的语言&#xff0c;50%的程序员都能掌握SQL&#xff0c;数据分析师也是SQL的主要使用人员之一。 从早期的基本语法&#xff0c;到融合了XML、JSON等复杂数…

【Matlab 六自由度机器人】笛卡尔空间规划和关节空间规划(附MATLAB建模代码)

笛卡尔空间规划和关节空间规划 近期更新前言正文1. 笛卡尔空间规划特点&#xff1a;步骤&#xff1a; 2. 关节空间规划特点&#xff1a;步骤&#xff1a; 3. 两种方法的区别4. MATLAB代码&#xff1a;机械臂避障路径规划问题和解答4.1 关节空间规划方法4.2 笛卡尔空间规划方法4…

Java中关于算数运算符的理解

在Java中基本的算数运算符有五类 加减-乘*在编程语言中乘号一律写为 *除/在Java中两个整数相除结果还是整数取余%取得的是两个数相除的余数 这里可以看见&#xff0c;在输出加法和减法时&#xff0c;我在后面多加了一个括号&#xff0c;这是因为运算优先级的原因&#xff0c;加…

105. 从前序与中序遍历序列构造二叉树【 力扣(LeetCode) 】

文章目录 零、LeetCode 原题一、题目描述二、测试用例三、解题思路四、参考代码 零、LeetCode 原题 105. 从前序与中序遍历序列构造二叉树 一、题目描述 给定两个整数数组 preorder 和 inorder &#xff0c;其中 preorder 是二叉树的先序遍历&#xff0c; inorder 是同一棵树的…

Hadoop集群安装

集群规划 node01node02node03角色主节点从节点从节点NameNode√DataNode√√√ResourceManager√NodeManager√√√SecondaryNameNode√Historyserver√ 上传安装包到node01 解压到指定目录 tar -zxvf /bigdata/soft/hadoop-3.3.3.tar.gz -C /bigdata/server/ 创建软链接 cd…

基于Spring Boot的医疗病历B2B平台开发策略

第4章 系统设计 4.1 系统总体设计 系统不仅要求功能完善&#xff0c;而且还要界面友好&#xff0c;因此&#xff0c;对于一个成功的系统设计&#xff0c;功能模块的设计是关键。由于本系统可执行的是一般性质的学习信息管理工作&#xff0c;本系统具有一般适用性&#xff0c;其…

49 | 桥接模式:如何实现支持不同类型和渠道的消息推送系统?

上一篇文章我们学习了第一种结构型模式&#xff1a;代理模式。它在不改变原始类&#xff08;或者叫被代理类&#xff09;代码的情况下&#xff0c;通过引入代理类来给原始类附加功能。代理模式在平时的开发经常被用到&#xff0c;常用在业务系统中开发一些非功能性需求&#xf…

Docker consul注册中心

一、consul 1.1、什么是服务注册与发现 服务注册与发现是微服务架构中不可或缺的重要组件。 起初服务都是单节点的&#xff0c;不保障高可用性&#xff0c;也不考虑服务的压力承载&#xff0c;服务之间调用单纯的通过接口访问。 直到后来出现了多个节点的分布式架构&#x…

如何看一个flutter项目的具体flutter版本

查看pubspec.lock文件 这个项目实际运行的就是 flutter 3.16.6 版本的

模电板测试分析报告【积分/微分电路】

积分电路常用于波形转换&#xff0c;如将矩形波变三角波。对正弦波积分可以实现相移。 微分电路&#xff1a; 为什么直接串联0.1uF电容到反馈线上去&#xff1a; 整改&#xff1a;这么看的话原理图中C58应该换成电阻的。 积分电路下图中红色的换成电容就可以变成微分电路了。 从…

八、随机名字功能

摘要&#xff1a; XML在C#与Unity3D中的实战运用 - PlaneZhong - 博客园 (cnblogs.com) 读取策划提供的配置文件。 策划提供一份execel文档&#xff0c;程序将它转化为一个配置文件&#xff08;xml&#xff09; 首先&#xff1a; XML是一个可扩展标记的语言 一、转换方法…

VSCode运行QT界面

VSCode用久了,感觉Qt Creator的写起代码来还是不如VSCode得心应手,虽然目前还是存在一些问题,先把目前实现的状况做个记录,后续有机会再进一步优化。 当前方式 通过QtCreator创建一个CMake项目,然后使用CMake的方式在VSCode中进行编译。 claude给出的建议 左上角的名字会…

Node.js管理工具NVM

nvm&#xff08;Node Version Manager&#xff09;是一个用于管理多个 Node.js 版本的工具。以下是 nvm 的使用方法和一些常见命令&#xff1a; 一、安装 nvm 下载 nvm&#xff1a; 地址&#xff1a;https://github.com/coreybutler/nvm-windows/releases访问 nvm 的 GitHub 仓…

【C语言】你不知道的知识小盲区——柔性数组

文章目录 一、什么是柔性数组二、柔性数组的特点三、柔性数组的使用四、柔性数组的优势 一、什么是柔性数组 也许你从来没有听说过柔性数组&#xff08;flexible array&#xff09;这个概念&#xff0c;但是它确实是存在的。在C99标准中&#xff0c;如果结构体的最后一个成员是…

sqli-labs less-26 空格绕过

空格绕过 过滤空格 用Tab代替空格%20 %09 %0a %0b %0c %0d %a0 //() 绕过空格注释符绕过//–%20//#–- -;%00; 空白字符绕过SQLite3 —— 0A,0D,0c,09,20 MYSQL 09,0A,0B,0B,0D,A0,20 PosgressSQL 0A,0D,0C,09,20 Oracle_11g 00,0A,0D,0C,09,20 MSSQL 01,02,03,04,05,06,07,…

[瑞吉外卖]-05菜品模块

文件上传下载 介绍 文件上传也称为upload&#xff0c;是指将本地图片、视频、音频等文件上传到服务器上, 可以供其他用户浏览或下载 前端组件库提供了上传组件&#xff0c;但是底层原理还是基于form表单的文件上传。 服务端要接收客户端上传的文件&#xff0c;通常都会使用Ap…

一次Fegin CPU占用过高导致的事故

记录一下 一次应用事故分析、排查、处理 背景介绍 9号上午收到CPU告警&#xff0c;同时业务反馈依赖该服务的上游服务接口响应耗时太长 应用告警-CPU使用率 告警变更 【WARNING】项目XXX,集群qd-aliyun,分区bbbb-prod,应用customer,实例customer-6fb6448688-m47jz, POD实例CP…

Web集群服务-Nginx

1. web服务 1. WEB服务:网站服务,部署并启动了这个服务,你就可以搭建一个网站 2. WEB中间件: 等同于WEB服务 3. 中间件:范围更加广泛,指的负载均衡之后的服务 4. 数据库中间件:数据库缓存,消息对列 2. 极速上手指南 nginx官网: nginx documentation 2.1 配置yum源 vim /etc/…

HTML基础知识

介绍 HTML&#xff08;HyperText Markup Language&#xff0c;超文本标记语言&#xff09;是一种用于创建网页的标准标记语言。它描述了一个网站的结构骨架&#xff0c;使得浏览器能够展示具有特定格式的文本、链接、图片和其他内容。以下是HTML的一些基础知识&#xff1a; HT…

骨传导耳机哪个牌子好?自费测评5大爆款骨传导耳机,高能不断!

随着科技的飞速发展&#xff0c;耳机市场也迎来了一次又一次的革新。从有线到无线&#xff0c;从入耳式到头戴式&#xff0c;每一次技术的突破都为用户带来了全新的听觉体验。近年来&#xff0c;骨传导耳机以其独特的传声方式和健康舒适的佩戴体验&#xff0c;逐渐成为运动爱好…