当前位置: 首页 > news >正文

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.mrgr.cn/news/51058.html

相关文章:

  • SpringTask的学习
  • 高阶数据结构与算法——红黑树の奥秘
  • 记忆化递归讲解和【题解】—— [NOIP2001 普及组] 数的计算
  • Mamba学习笔记(1)——原理基础
  • 超强的开源OCR工具Surya更新了表识别功能!GitHub收藏人数超过1万。
  • Java微信支付接入(9) - API V3 微信支付查单API
  • 地平线与英伟达工具链 PTQ 工具功能参数对比与实操
  • 文件IO(Linux文件IO)
  • 二维码生成器 1.02.41| 一站式QR码生成器和美化工具
  • 判断 HTTP/2 多路复用是否在服务器上实现
  • Vue中v-bind对样式控制的增强—(详解v-bind操作class以及操作style属性,附有案例+代码)
  • 10.15学习
  • 【读书笔记-《30天自制操作系统》-28】Day29
  • libaom 源码分析:aomenc.c 文件
  • 【数据结构】二叉树(一)遍历
  • 虚拟机错误:‘VirtualBox Host-Only Ethernet Adapter #2‘
  • 猿人学 — 第1届第4题(解题思路附源码)
  • 前端性能优化之概述篇
  • C/C++语言基础--C++异常看这一篇就够了
  • 关于this指针