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

python学习day2:进制+码制+逻辑运算符

进制

Python 中的进制表示与转换

进制的基本概念

  • 二进制、八进制、十进制、十六进制的定义与特点
  • 不同进制在计算机科学中的应用场景

Python 中的进制表示

  • 二进制表示:使用 0b 前缀
  • 八进制表示:使用 0o 前缀
  • 十六进制表示:使用 0x 前缀
  • 示例代码:
binary_num = 0b1010
octal_num = 0o12
hex_num = 0xA
Python 中的进制转换
  • 十进制转其他进制:使用 bin()oct()hex() 函数
  • 其他进制转十进制:使用 int() 函数
  • 示例代码:
decimal_num = 10
print(bin(decimal_num))  # 输出: 0b1010
print(oct(decimal_num))  # 输出: 0o12
print(hex(decimal_num))  # 输出: 0xAbinary_num = '1010'
print(int(binary_num, 2))  # 输出: 10

进制转换的常见应用

  • 数据存储与传输中的进制转换
  • 网络编程中的 IP 地址与端口号的进制表示
  • 加密算法中的进制转换

进制转换的注意事项

  • 不同进制之间的转换精度问题
  • 进制转换中的溢出与截断问题
  • 示例代码:
large_num = 0xFFFFFFFF
print(int(large_num))  # 输出: 4294967295

进制转换的进阶技巧

  • 使用 format() 函数进行进制格式化输出
  • 自定义进制转换函数
  • 示例代码:
num = 255
print(format(num, 'b'))  # 输出: 11111111
print(format(num, 'o'))  # 输出: 377
print(format(num, 'x'))  # 输出: ff

2进制口诀:8421口诀

8421口诀是一种用于快速记忆二进制与十进制之间转换的方法。它基于二进制的位权值,即每一位的权重分别是8、4、2、1。通过这个口诀,可以快速将二进制数转换为十进制数,或者将十进制数转换为二进制数。

8421口诀的使用方法

将二进制数的每一位与对应的位权值相乘,然后将结果相加,即可得到对应的十进制数。例如,二进制数1011可以按照以下方式转换为十进制:

1 * 8 = 8
0 * 4 = 0
1 * 2 = 2
1 * 1 = 1

将结果相加:8 + 0 + 2 + 1 = 11,因此二进制数1011对应的十进制数是11

示例

  • 二进制数1101转换为十进制:

    1 * 8 = 8
    1 * 4 = 4
    0 * 2 = 0
    1 * 1 = 1
    

    结果:8 + 4 + 0 + 1 = 13

  • 二进制数1001转换为十进制:

    1 * 8 = 8
    0 * 4 = 0
    0 * 2 = 0
    1 * 1 = 1
    

    结果:8 + 0 + 0 + 1 = 9

反向转换

8421口诀也可以用于将十进制数转换为二进制数。通过将十进制数分解为8、4、2、1的组合,可以快速得到对应的二进制数。例如,十进制数10可以分解为8 + 2,因此对应的二进制数为1010

 

需要哪一个相加,才能获得要转换的十进制的数,则在下方填1,若不需要则填0 

示例

  • 十进制数7转换为二进制:

    7 = 4 + 2 + 1
    

    对应的二进制数为0111

  • 十进制数12转换为二进制:

    12 = 8 + 4
    

    对应的二进制数为1100

通过8421口诀,可以快速进行二进制与十进制之间的转换,特别适用于初学者或需要快速计算的场景。

进制转换的实践案例

  • 实现一个简单的进制转换工具
  • 处理大整数的进制转换问题
  • 示例代码:
def convert_base(num, base):digits = "0123456789ABCDEF"if num < base:return digits[num]else:return convert_base(num // base, base) + digits[num % base]print(convert_base(255, 16))  # 输出: FF

多进制转十进制(计算方法)

二转十

例如:2进制下的1010转为十进制

0b1010=1*(2**3)+0*(2**2)+1*(2**1)+0*(2**0)
-->8+0+2+0
-->8+2
-->10

 八转十

例如:8进制下的0o12转为十进制

0o12=1*(8**1)+2*(8**0)
-->8+2
-->10

十六转十 

例如:0x11转为十进制

0x11=1*(16**1)+1*(16**0)
-->16+1
-->17

 多进制转2进制转16进制

一般计算16进制,我们先转为2进制,再转为16进制。

0o664通过421
-->0b110 110 100
-->0b1 1011 0100
0b1 1011 0100转16进制
1011通过8421口诀
0b1-->0x1
-->1011-->8+4+1-->11-->0xb
0100通过8421
-->4
-->0x1b4

码制(详细可看C语言D5)

原码:

有符号整数的二进制编码方式,其中最高位表示符号位,0表示正数,1表示负数。其余位表示数值的绝对值。例如,+10的原码为0000 1010,-10的原码为1000 1010。

通常由原码转反码,由反码转补码,当补码再补码=原码

补充:

为什么都是8位:

计算机中存储的数据单位=1字节=8位

反码:

反码特点:

        正数情况下与原码的值不变

        负数情况下,符号位不变,但其他部分取反(0变1,1变0)

补码:

在计算机系统中,数值一律用补码来存储

补码特点:

        对于正数来说,原码、反码、补码皆相同

        对于负数来说,其补码=它的反码加1

        补码符号位不动,其他位求反,最后整个 数+1,得到补码

总结:

由-1来计算

原码

0b1000 0001

反码

0b1111 1110

补码

0b1111 1111

逻辑运算符

逻辑

  • 与逻辑==&
  • 或逻辑==|
  • 非逻辑==~

运算符

+,-,*,/,//向下取整数,%取模,**幂

python2中/和//都是除整

位运算符

  • &位与,|位或,^异或,<<左移,>>右移
  • ~按位取反,包括符合位
  • &相当于相乘,|相当于相加,^相异出1
  • 1<<2就是将1向左移动两个位置,同理>>将1向右移动两个位置

提问5&3=?

5    &    3
0b0000 0101
0b0000 0011    &
-----------------
0b0000 0001    1

5|3=?

5    |    3
0b0000 0101
0b0000 0011    |
-----------------
0b0000 0111    7

5^3=?

5    &    3
0b0000 0101
0b0000 0011    ^
-----------------
0b0000 0110    6    

 1<<3=?

1    <<    3
0b0000 0001   <<3
-----------------
0b0000 1000    8        
相当于
1*(2**3)=85<<3
5*(2*3)=40

5>>3=?

5    &    3
0b0000 0101    >>
-----------------
5//(2**3)    0

~5=?

~5
0b0000 0101    ~
-----------------
0b1111 1010    补码
0b1000 0110    原码
-0b110
-6

 

http://www.xdnf.cn/news/8340.html

相关文章:

  • 云存储迁移遇瓶颈?大文件跨平台传输加速指南
  • hbuilder中h5转为小程序提交发布审核
  • Kafka Producer 如何实现Exactly Once消息传递语义
  • 用HTML5+JavaScript实现汉字转拼音工具
  • 使用KubeKey快速部署k8s v1.31.8集群
  • 车载诊断架构 --- 车载诊断有那些内容(下)
  • 技术服务业-首套运营商网络路由5G SA测试专网搭建完成并对外提供服务
  • threejs 四元数(Quaternion)和欧拉角(Euler)学习
  • 学习Raft共识算法基本原理
  • 了解Android studio 初学者零基础推荐(3)
  • Python版scorecardpy库woebin函数使用
  • 安全自动化与AI驱动防御
  • 《数据结构笔记三》:单链表(创建、插入、遍历、删除、释放内存等核心操作)
  • 教育行业课件共享难题:大文件分发效率优化方案
  • 广东省省考备考(第十八天5.23)—言语:语句排序题(听课后强化训练)
  • 对比关系型数据库与NoSQL数据库
  • nlf 2025 部署笔记
  • 利用 Python 爬虫获取唯品会 VIP 商品详情:实战指南
  • microsoft中word如何添加个人签名
  • 时序数据库 TDengine × Superset:一键构建你的可视化分析系统
  • PyQt学习系列10-性能优化与调试技巧
  • Java对象内存分配优化教学
  • 端到端大语言模型微调技术 Demo 全流程详解(附完整模块说明)
  • C语言数据结构
  • 【LaTex】基础语法入门
  • 使用Python在PyCharm中进行交通工程数据分析的完整流程,包括数据清洗、挖掘、关联、可视化和应用整合等各个阶段
  • RK3399 Android13设备插拔无线鼠标键盘设备出现APP或系统界面刷新现象
  • 详解osgb的顶点,纹理,索引,UV读取与存储
  • 注册并创建一个微信小程序
  • 第三章 软件工程模型和方法