【天池龙珠计划】Task 1 Python基础入门:位运算

本文介绍了Python中的位运算基础知识,包括原码、反码和补码的概念,并详细解释了按位非、按位与、按位或、按位异或、按位左移和按位右移等位运算符的操作原理及应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学习目标:Python基础之位运算

一天掌握位运算的基础知识


学习内容:

1、 位运算的基础知识


学习时间:

1、 周一至周五晚上 7 点—晚上9点
2、 周六上午 9 点-上午 11 点
3、 周日下午 3 点-下午 6 点


学习产出:

1、CSDN 技术博客 1 篇

位运算

1. 原码、反码和补码

二进制有三种不同的表示形式:原码、反码和补码,计算机内部使用补码来表示。

原码:就是其二进制表示(注意,有一位符号位)。

00 00 00 11 —> 3
10 00 00 11 —> -3

反码:正数的反码就是原码,负数的反码是符号位不变,其余位取反(对应正数按位取反)。

00 00 00 11 —> 3
11 11 11 00 —> -3

补码:正数的补码就是原码,负数的补码是反码+1.

00 00 00 11 —> 3
11 11 11 01 —> -3

符号位:最高位为符号位,0表示正数,1表示负数。在位运算中符号位也参与运算。

2.按位运算

  • 按位非操作~
    ~1 = 0 ~0 = 1
    ~把 num 的补码中的0和1全部取反(0变为1,1变为0)有符号整数的符号位在非操作运算中同样会取反。
    00 00 01 01 —> 5
    ~
    11 11 10 10 —> -6

  • 按位与操作 &
    1 & 1 = 1
    1 & 0 = 0
    0 & 1 = 0
    0 & 0 = 0
    只有两个对应位都为 1 时才为 1
    00 00 01 01 -> 5
    &
    00 00 01 10 -> 6
    ————
    00 00 01 00 -> 4

  • 按位或操作 |
    1 | 1 = 1
    1 | 0 = 1
    0 | 1 = 1
    0 | 0 = 0

    只要两个对应位中有一个 1 时就为 1

    00 00 01 01 -> 5
    |
    00 00 01 10 -> 6
    ——
    00 00 01 11 -> 7

  • 按位异或操作 ^
    1 ^ 1 = 0
    1 ^ 0 = 1
    0 ^ 1 = 1
    0 ^ 0 = 0

    只有两个对应位不同时才为 1

00 00 01 01 -> 5
^
00 00 01 10 -> 6
——
00 00 00 11 -> 3

异或操作的性质:满足交换律和结合律

A: 00 00 11 00
B: 00 00 01 11

A^B: 00 00 10 11
B^A: 00 00 10 11

A^A: 00 00 00 00
A^0: 00 00 11 00

ABA: = AAB = B = 00 00 01 11

  • 按位左移操作<<
    num << i 将num的二进制表示向左移动i位所得的值。

00 00 10 11 -> 11
11 << 3
——
01 01 10 00 -> 88

  • 按位右移操作>>
    num >> i 将num的二进制表示向右移动i位所得的值。

00 00 10 11 -> 11
11 >> 2
——
00 00 00 10 -> 2

3.利用位运算实现快速计算

通过<<,>>快速计算2的倍数问题。
n << 1 -> 计算 n2
n >> 1 -> 计算 n/2,负奇数的运算不可用
n << m -> 计算 n
(2^m),即乘以 2 的 m 次方
n >> m -> 计算 n/(2^m),即除以 2 的 m 次方
1 << n -> 2^n

通过 ^ 快速交换两个整数。 通过 ^ 快速交换两个整数。
a ^= b
b ^= a
a ^= b

以上就是位运算的基础内容了,你get到了吗?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值