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

Python内置函数---bin()

        用于将整数转换为二进制字符串

1. 基本语法与参数

bin(x)

        参数: x  必须为整数( int 类型),或实现了 __index__() 方法的自定义对象(该方法需返回整数) 。

        返回值:以 '0b' 开头的二进制字符串。

        例如:

bin(5) # '0b101'bin(-3) # '-0b11'bin(0) # '0b0'

2. 核心特性

(1) 整数转换规则 

        正数:直接转换为二进制,如 bin(42) → '0b101010'  。

        负数:以补码形式表示,前缀为 '-0b' ,如 bin(-42) → '-0b101010'  。

        零:返回 '0b0'  。

(2) 非整数类型处理

        传递非整数(如字符串、浮点数)会触发 TypeError :      

bin("10") # TypeError: 'str' object cannot be interpreted as an integer

(3) 自定义对象支持

        通过实现 __index__() 方法,可自定义对象的二进制转换逻辑:

class MyClass:def __index__(self):return 255obj = MyClass()print(bin(obj)) # '0b11111111'

3. 去除前缀 '0b' 的方法

(1) 字符串切片

binary_str = bin(10)[2:] # '1010'

(2) 格式化函数

        使用 format() 或f-string:

format(10, 'b') # '1010'f"{10:b}" # '1010'

4. 内部机制与性能 

(1) 实现原理

        整数存储:Python内部使用变长补码表示整数, bin() 通过逐位分解生成二进制字符串 。

        算法复杂度:时间复杂度为 O(log n) ,空间复杂度同理 。

(2) 性能对比

        与其他进制转换函数( hex() 、 oct() )相比, bin() 处理速度最快,尤其适合大整数 。

5. 实际应用场景

(1) 位运算与底层操作

        结合位运算符( & 、 | 、 ^ )进行高效数据处理:

x = 0b1010y = 0b1100print(bin(x & y)) # '0b1000' # 按位与

(2) 数据压缩与传输

        将数据转换为二进制格式以减少存储空间:

text = "Hello"binary_data = ''.join(bin(ord(c))[2:] for c in text) # 二进制拼接def bit_reverse(n):return int(bin(n)[2:][::-1], 2) # 二进制反转

6. 注意事项

类型限制:仅支持整数类型,非整数需提前转换。

负数处理:返回补码形式,需注意符号位的影响。

大整数支持:Python可处理任意长度整数,但转换耗时随位数增加。

 总结

        bin() 是处理二进制数据的基础工具,适用于位操作、数据编码及算法优化等场景。其简洁的语法和高效性使其成为Python编程中的常用函数,但需注意类型限制和负数表示规则。

http://www.dtcms.com/a/150433.html

相关文章:

  • 11.thinkphp的模板
  • java将pdf转换成word
  • 3DGS之齐次坐标
  • 用户模块-SpringEvent观察者模式
  • ToB标杆!容联云入选量子位「2025中国AIGC应用报告」
  • CSS内边距、外边距、边框
  • 深入微服务核心:从架构设计到规模化
  • CSS初识
  • Android仿今日头条Kotlin版本
  • 机器学习算法-分类决策树
  • vue项目中使用tinymce富文本编辑器
  • CSS3 基础(边框效果)
  • 【Unity笔记】Unity 编辑器扩展:一键查找场景中组件引用关系(含完整源码)(组件引用查找工具实现笔记)
  • Prompt 结构化提示工程
  • React组件测试完全指南:从入门到实践
  • vue3+dhtmlx 甘特图真是案例
  • 数据一致性问题剖析与实践(二)——单机事务的一致性问题
  • 数据为基:机器学习中数值与分类数据的处理艺术及泛化实践
  • MacOS中安装Python(homebrew,pyenv)
  • Stable Baselines3 结合 gym 训练 CartPole 倒立摆
  • 【教学类-102-17】蝴蝶三色图(用最大长宽作图,填入横板和竖版共16个WORD单元格模版大小,制作大小图)
  • Java 环境配置详解(Windows、macOS、Linux)
  • 【Leetcode 每日一题】1399. 统计最大组的数目
  • 第52讲:农业AI + 区块链——迈向可信、智能、透明的未来农业
  • 大模型框架技术演进与全栈实践指南
  • 1.5软考系统架构设计师:架构师的角色与能力要求 - 超简记忆要点、知识体系全解、考点深度解析、真题训练附答案及解析
  • Elasticsearch 报错 Limit of total fields [1000] has been exceeded
  • Postman忘记密码访问官网总是无响应
  • SpringCloud 微服务复习笔记
  • 第七篇:linux之基本权限、进程管理、系统服务