IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Python学习打卡【Task1】位运算和原码,反码及补码 -> 正文阅读

[Python知识库]Python学习打卡【Task1】位运算和原码,反码及补码

一、学习知识点概要(review)

  1. 原码,反码和补码的定义(二进制表示)
  2. 位运算补充和总结
  3. bin()函数

二、学习内容(record)

1.原码、反码和补码

对于正数本身,其反码和补码都是本身

'''比如说:
正数3的二进制表示:00000011,即3的原码;000000011也是3的反码和补码
则-3的二进制表示,10000011,即原码
正负数最高位不同,1代表负数,0代表负数。
'''

那么对于负数呢?

负数的反码就是最高位(符号位)不变,其余位取反

'''我们以-4为例
-4的原码:10000100
则其反码就是:11111011
'''

负数的补码就是反码+1

"""以-5为例
-5的原码是10000101
其反码就是11111010
则补码就为11111011
"""

2.位运算

<<代表按位左移,>>代表按位右移

在我昨天第四模块中也对位运算进行一些反思

对于3>>2按位右移运算原则是,将00000011向右移两位,低位舍弃(舍弃11),高位补0(负数补1),则变成00000000,所以3>>2输出0

对于3<<2运算按位左移运算原则是,将00000011向左移两位,全部二进制数整体向左移,高位舍弃,低位补0,则变成00001100,所以3<<2输出12

'''对于负数,按位左移运算高位不变,仍为1
对于运算-4 << 1 
即将10000100往左移1位,变成10001000
所以-4 << 1 输出结果为-8
'''

对于按位运算,m<<n可以代表m乘以2的n次方,m>>n可以代表m除以2的n次方

#举个例子
4<<2即4*2的平方=4*4=16

8>>2即8/2的平方=8/4=2

因此<<和>>可以实现2的倍数运算

3.补充:位运算之异或运算的性质

异或运算:a^b,a与b不同,输出结果为1;a与b相同,则输出结果为0。

异或运算的性质:

'''
交换律,即 a ^ b ^ c = a ^ c ^ b
结合律, 即 (a ^ b) ^ c = a ^ ( b ^c )
对于任何数,都有 a ^ a = 0, a ^ 0 = a
自反性, a ^ b ^ b = a ^ 0 = a
'''

从上面可以看出任何数与其本身异或运算的结果为0,;而任何数与0异或运算的结果为其本身

4.利用位运算实现整数集合

一个数的二进制表示可以看做是一个集合

如集合a={6,3,5,2}可以表示成0001101100即0b1101100;

元素与集合的应用:从集合中插入和删除,和判断某元素是否在集合中

插入新元素:

#在集合a中添加1
#a={6,3,5,2}
a=0b1101100
b=a|(1<<1)
print(bin(b))
#0b1101110

删除某元素

#在集合中将6删除
a=0b1101100
b=a&~(1<<6)
print(bin(b))
#输出0b101100

判断某元素是否在集合中

#判断3,5是否在集合a中
a=0b1101100
print(a&(1<<4))
print(a&(1<<5))
'''
输出
0
32
'''

集合之间的操作:

a 补 ? -> ~a

a 交 b -> a & b

a 并 b -> a | b

a 差 b -> a & (~b)

5.Python中的bin()输出

print(bin(3))
#输出0b11
print(bin(-3))
#输出-0b11

可以看到bin(负数)输出的是它的正数的原码前加一个负号

三、学习问题与解答(analysis)

LeetCode练习题:一开始利用位运算找出只出现一次的数字仍没有头绪

经上网查询,知道使用异或运算将数组内所有值取异或,最后出现的就是要找的数字。

原理:任何数与其本身异或为0;0与任何数异或为其本身;异或运算满足交换律和结合律

四、学习思考与总结(summary)

task1的内容基本完成了,但还有些问题待复盘,希望再接再厉!

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-11-24 07:53:56  更:2021-11-24 07:55:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 13:49:11-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计