Python-VBA函数之旅-bin函数

这篇具有很好参考价值的文章主要介绍了Python-VBA函数之旅-bin函数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1、bin函数:

1-1、Python:

1-2、VBA:

2、相关文章:

个人主页:非风V非雨-CSDN博客

        bin函数在Python中的实际应用场景相当广泛,特别是在涉及底层数据操作、编码转换、位运算以及算法实现时。常见的应用场景有:

1、位运算和掩码操作:当你需要执行复杂的位运算(如与(&)、或(|)、非(~)、异或(^)、左移(<<)、右移(>>)等)时,或者需要设置、清除或切换特定位时,bin()可以帮助你直观地查看和操作整数的二进制表示。例如,在处理硬件接口、网络通信协议或优化算法时,位运算非常常见。

2、数据结构和算法实现:在实现某些特定的数据结构和算法时,如哈希表、位图(bitmap)、布隆过滤器(Bloom filter)等,你可能需要处理二进制数据。在这些情况下,bin()可以帮助你调试和验证你的代码是否正确地处理了二进制数据。

3、编码转换和解析:如果你正在处理来自外部源的数据,这些数据可能是以二进制形式表示的,bin()可以帮助你查看和解析这些数据。例如,处理来自传感器的原始数据或解析二进制文件格式时,你可能需要用到这个函数。

4、密码学和加密:在密码学和加密领域,二进制数据非常常见。当你需要理解和处理加密算法中的位操作时,bin()可以帮助你可视化整数的二进制表示,从而更容易地理解算法的工作原理。

5、调试和错误排查:在编写涉及整数和位运算的代码时,bin()可以帮助你快速发现和定位错误。通过比较预期和实际的二进制表示,你可以更容易地找到问题的根源。

6、低级编程和硬件交互:在嵌入式系统编程、硬件接口编程或低级网络通信等场景中,经常需要直接处理二进制数据。bin()函数可以用于将整数转换为二进制字符串,便于理解和处理这些数据。

7、数据压缩和存储:在某些场景下,为了节省存储空间或提高数据传输效率,需要将数据转换为更紧凑的二进制格式。bin()函数可以用于将整数转换为二进制字符串,作为数据压缩或存储的一部分。

8、图形和可视化:在创建二进制图或可视化二进制数据时,bin()函数可以将整数转换为易于处理的二进制字符串格式,方便进一步的数据处理和可视化操作。

        需要注意,虽然bin()函数对于查看整数的二进制表示非常有用,但在实际的生产代码中,你可能不会直接使用它来处理二进制数据。相反,你可能会使用更低级别的库或工具来处理二进制数据,这些库或工具提供了更多的功能和更好的性能。然而,bin()对于快速查看和理解整数的二进制表示仍然是一个非常有价值的工具。

Python-VBA函数之旅-bin函数,Myelsa的Python函数之旅,算法,运维,数据结构,开发语言,python,学习,网络

1、bin函数:
1-1、Python:
# 1.函数:bin
# 2.功能:将一个整数转换为前缀以“0b”开头的二进制字符串形式
# 3.语法:bin(x)
# 4.参数:一个整数,即正整数、0和负整数,三者任选其一
# 5.返回值:返回以0b开头的二进制字符串
# 6.说明:
# 6-1、对于负整数,bin()函数会返回带有负号的前缀的二进制字符串
# 6-2、bin()函数用于将整数转换为二进制字符串表示。但需要注意的是,bin()函数只能用于整数类型的数据,如果传入其他类型的数据,将会抛出`TypeError`异常
# 6-3、bin()函数的参数可以是一个带有`__index__()`方法的对象。如果是对象,则会调用该对象的`__index__()`方法来获取整数值
# 6-4、当转换负数时,bin()函数会返回一个以`-0b`开头的二进制字符串。例如,bin(-10)返回的结果是`-0b1010`
# 6-5、bin()函数转换的二进制字符串是无符号的,即不包含正负号。如果需要表示有符号的二进制数,可以使用其他方法进行处理
# 7.示例:
# 应用1:位运算和掩码操作
# 定义一些整数
a = 10  # 二进制:0000 1010
b = 24  # 二进制:0001 1000
# 位运算
# 按位与(&)
print("a & b =", a & b)  # 输出:8 (二进制:0000 1000)
# 按位或(|)
print("a | b =", a | b)  # 输出:26 (二进制:0001 1010)
# 按位异或(^)
print("a ^ b =", a ^ b)  # 输出:18 (二进制:0001 0010)
# 按位取反(~)
print("~a =", ~a)  # 输出:-11 (二进制:1111 0100,注意Python中整数是补码表示)
# 左移(<<)
print("a << 2 =", a << 2)  # 输出:40 (二进制:0010 1000)
# 右移(>>)
print("a >> 2 =", a >> 2)  # 输出:2 (二进制:0000 0010)

# 掩码操作
# 假设我们想要设置a的最低两位为1
mask = 6  # 二进制:0000 0110
a_new = a | mask  # 设置最低两位为1
print("a_new =", a_new)  # 输出:14 (二进制:0000 1110)
# 假设我们想要清除a的最低两位
mask = ~6  # 二进制:1111 1000
a_new = a & mask  # 清除最低两位
print("a_new =", a_new)  # 输出:8 (二进制:0000 1000)
# a & b = 8
# a | b = 26
# a ^ b = 18
# ~a = -11
# a << 2 = 40
# a >> 2 = 2
# a_new = 14
# a_new = 8

# 应用2:数据结构和算法实现
# 检查一个数是否为2的幂
def is_power_of_two(n):
    # 如果n不为0,并且n与n-1进行位与运算的结果为0,则n是2的幂
    return n != 0 and (n & (n - 1)) == 0
# 主函数
if __name__ == '__main__':
    # 定义一个整数num,值为16,即2的4次方
    num = 16  # 2的4次方
    # 打印num是否为2的幂
    print(f"{num} 是2的幂吗? {'是' if is_power_of_two(num) else '否'}")
    # 打印num的二进制表示
    print(f"二进制表示: {bin(num)}")
# 16 是2的幂吗? 是
# 二进制表示: 0b10000

# 实现一个哈希函数
def simple_hash(data):
    # 初始化哈希值为0,采用64位无符号整数
    hash_value = 0
    # 遍历输入数据的每个字符
    for char in data:
        # 左移5位(相当于乘以32)并加上原来的哈希值以及当前字符的ASCII值
        # 这种哈希函数结合了移位和加法操作,增加了哈希的复杂性
        hash_value = (hash_value << 5) + hash_value + ord(char)
        # 使用位与操作确保哈希值在64位范围内,防止溢出
        hash_value &= 0xFFFFFFFFFFFFFFFF
    # 返回计算得到的哈希值
    return hash_value
# 主函数
if __name__ == '__main__':
    # 定义一个字符串作为哈希函数的输入
    data = "myelsa"
    # 调用哈希函数计算输入数据的哈希值
    hash_val = simple_hash(data)
    # 打印哈希值
    print(f"哈希值: {hash_val}")
    # 打印哈希值的二进制表示
    print(f"二进制表示: {bin(hash_val)}")
# 哈希值: 4413005419
# 二进制表示: 0b100000111000010010001111001101011

# 应用3:编码转换和解析
def encode_to_bin(num):
    """
    将整数编码为二进制字符串。
    """
    # 使用bin函数,并去掉'0b'前缀
    binary_str = bin(num)[2:]
    return binary_str
def decode_from_bin(binary_str):
    """
    将二进制字符串解析回整数。
    """
    # 使用int函数,并指定基数为2
    num = int(binary_str, 2)
    return num
# 主函数
if __name__ == '__main__':
    original_number = 42
    print(f"原始数字: {original_number}")
    # 编码为二进制字符串
    encoded_binary = encode_to_bin(original_number)
    print(f"编码后的二进制字符串: {encoded_binary}")
    # 从二进制字符串解析回数字
    decoded_number = decode_from_bin(encoded_binary)
    print(f"解析后的数字: {decoded_number}")
    # 验证解析是否正确
    assert original_number == decoded_number, "解码不正确"
    print("编码和解码成功!")
# 原始数字: 42
# 编码后的二进制字符串: 101010
# 解析后的数字: 42
# 编码和解码成功!

# 应用4:调试和错误的排查
def debug_binary_representation(value):
    """
    打印一个整数的二进制表示,用于调试和错误排查。
    """
    print(f"整数值: {value}")
    print(f"二进制表示: {bin(value)}")
# 主函数
if __name__ == '__main__':
    # 假设我们有一个位操作的问题
    x = 5
    y = 3
    # 进行位与操作
    result = x & y
    # 使用debug_binary_representation函数查看x, y和result的二进制表示
    debug_binary_representation(x)
    debug_binary_representation(y)
    debug_binary_representation(result)
# 整数值: 5
# 二进制表示: 0b101
# 整数值: 3
# 二进制表示: 0b11
# 整数值: 1
# 二进制表示: 0b1

# 应用5:低级编程和硬件交互
def simulate_hardware_register(value):
    """
    模拟硬件寄存器的操作,并返回其二进制表示。
    """
    # 假设硬件寄存器是一个8位的寄存器
    register_width = 8
    # 使用bin函数获取二进制表示,并去除'0b'前缀
    binary_str = bin(value)[2:].zfill(register_width)
    print(f"寄存器值: {value}")
    print(f"二进制表示: {binary_str}")
# 主函数
if __name__ == '__main__':
    # 假设我们要设置一个硬件寄存器的值为10(二进制:1010)
    register_value = 10
    simulate_hardware_register(register_value)
# 寄存器值: 10
# 二进制表示: 00001010

# 应用6:数据压缩和存储
def compress_bits(bits):
    """
    “压缩”一个只包含0和1的整数列表。
    注意:这只是一个示例,并不是真实的数据压缩算法。
    """
    # 初始化一个变量来存储压缩后的结果
    compressed = 0
    # 记录当前已经处理了多少位
    bit_count = 0
    # 遍历整数列表
    for bit in bits:
        # 通过左移操作将之前的数据“推”到更高的位,并添加新的位
        compressed = (compressed << 1) | bit
        bit_count += 1
        # 可以选择每8位、16位等存储一次压缩后的数据,这里我们每8位存储一次
        if bit_count % 8 == 0:
            # 使用bin函数来查看当前的二进制表示(仅用于调试)
            print(f"Compressed after {bit_count} bits: {bin(compressed)}")
            # 在这里,你可以将compressed的值存储或传输到其他地方
            # ...
            # 重置compressed变量以准备下一个8位的压缩
            compressed = 0
    # 如果最后不满8位,也打印出来
    if bit_count % 8 != 0:
        print(f"Final compressed (less than 8 bits): {bin(compressed)}")
# 主函数
if __name__ == '__main__':
    bits = [1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0]
    compress_bits(bits)
# Compressed after 8 bits: 0b10110011
# Compressed after 16 bits: 0b10101110
1-2、VBA:
Rem 模拟Python中bin函数应用2:数据结构和算法实现
Rem 自定义函数,功能:实现一个哈希函数
Function SimpleHash(data As String) As Double
    ' 定义一个Double类型的变量来存储哈希值
    Dim hashValue As Double
    ' 定义循环变量i和字符ASCII码变量charCode
    Dim i As Integer, charCode As Integer
      
    ' 初始化哈希值为0
    hashValue = 0
    ' 遍历输入字符串的每一个字符
    For i = 1 To Len(data)
        ' 获取当前字符的ASCII码
        charCode = Asc(mid(data, i, 1))
        ' 更新哈希值,通过左移和加法操作
        hashValue = (hashValue * 32) + hashValue + charCode
    Next i
    ' 返回计算得到的哈希值
    SimpleHash = hashValue
End Function
Rem 执行程序,功能:调用相关自定义函数,在立即窗口输出结果
Sub TestRun_1()
    ' 定义变量data存储输入字符串,binaryString存储哈希值的二进制形式,hashVal存储哈希值
    Dim data As String, binaryString As String
    Dim hashVal As Double
      
    ' 设置输入字符串为"win"
    data = "win"
    ' 调用SimpleHash函数计算哈希值
    hashVal = SimpleHash(data)
    ' 输出哈希值
    Debug.Print "哈希值: " & hashVal
    ' 将哈希值转换为二进制形式
    binaryString = ConvertToBinary(hashVal)
    ' 输出哈希值的二进制表示
    Debug.Print "二进制表示: " & binaryString
End Sub
Rem 自定义函数,功能:将字符串转换为二进制形式
Function ConvertToBinary(number As Double) As String
    ' 定义一个字符串变量result来存储转换结果
    Dim result As String
      
    ' 初始化result为空字符串
    result = ""
    ' 当number大于0时执行循环
    While number > 0
        ' 将number的二进制最低位添加到result的前面
        result = str(number Mod 2) & result
        ' 移除number的二进制最低位
        number = Fix(number / 2)
    Wend
    ' 如果result为空字符串,则赋值为"0"
    If Len(result) = 0 Then
        result = "0"
    End If
    ' 返回转换后的二进制字符串
    ConvertToBinary = result
End Function
'哈希值: 133166
'二进制表示:  1 0 0 0 0 0 1 0 0 0 0 0 1 0 1 1 1 0

注意:1-2中的代码需粘贴到你的VBA编辑器中,按F5执行对应的Sub程序即可输出结果。 

2、相关文章:

2-1、Python-VBA函数之旅-any()函数 

2-2、Python-VBA函数之旅-ascii()函数 

2-3、Python-VBA函数之旅-bool()函数 

2-4、Python-VBA函数之旅-bytearray()函数 

Python算法之旅:Algorithm

Python函数之旅:Function

个人主页:非风V非雨-CSDN博客

欢迎志同道合者一起交流学习,我的QQ:94509325/微信:

Python-VBA函数之旅-bin函数,Myelsa的Python函数之旅,算法,运维,数据结构,开发语言,python,学习,网络文章来源地址https://www.toymoban.com/news/detail-852857.html

到了这里,关于Python-VBA函数之旅-bin函数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python-VBA函数之旅-all函数

    目录 1、all函数: 1-1、Python: 1-2、VBA: 2、相关文章: 个人主页:非风V非雨-CSDN博客 ​​​​​​​          all函数 在编程中有多种实际应用场景,特别是在需要确保一个集合中的所有元素都满足某个条件时。常见的应用场景有: 1、验证数据的有效性: 当需要检查一

    2024年04月12日
    浏览(58)
  • Python-VBA函数之旅-hash函数

    目录 一、hash函数的定义: 二、hash函数的工作方式: ​三、hash函数的优缺点: 四、hash函数的常见应用场景: 1、hash函数: 1-1、Python: 1-2、VBA: 2、推荐阅读: 个人主页:https://blog.csdn.net/ygb_1024?spm=1010.2135.3001.5421  一、hash函数的定义:          哈希函数 ( Hash Function

    2024年04月26日
    浏览(35)
  • Python-VBA函数之旅-id函数

    目录 一、id函数的常见应用场景: 二、id函数使用注意事项: 1、id函数: 1-1、Python: 1-2、VBA: 2、推荐阅读: 个人主页:神奇夜光杯-CSDN博客  一、id函数的常见应用场景:         id函数 在Python中有一些实际应用场景,尽管它在日常编程中并不常用,常见的应用场景有

    2024年04月26日
    浏览(49)
  • Python-VBA函数之旅-exec函数

    目录 一、exec函数的常见应用场景: 二、exec函数安全使用注意事项: 三、exec函数与eval函数对比分析: 1、exec函数: 1-1、Python: 1-2、VBA: 2、相关文章: 个人主页:神奇夜光杯-CSDN博客  一、exec函数的常见应用场景:         exec函数 在Python中有多种实际应用场景,尽管

    2024年04月25日
    浏览(36)
  • Python-VBA编程500例-033(入门级)

    目录 1、角色定位: 1-1、Python: 1-2、VBA: 2、相关文章: Python算法之旅:Myelsa的Python算法之旅(高铁直达)-CSDN博客 个人主页:非风V非雨-CSDN博客 欢迎志同道合者一起交流学习,我的QQ:94509325/微信         角色定位 ( Role Positioning )在编程中的实际应用场景主要体现在以下几

    2024年04月26日
    浏览(26)
  • Python-VBA编程500例-029(入门级)

    目录 1、连续字符段索引: 1-1、Python: 1-2、VBA: 2、相关文章: Python算法之旅:Myelsa的Python算法之旅(高铁直达)-CSDN博客 个人主页:非风V非雨-CSDN博客 欢迎志同道合者一起交流学习,我的QQ:94509325/微信         连续字符段索引 ( Index of Consecutive Character Segments )在实际应用

    2024年04月13日
    浏览(29)
  • Python高级编程之旅2:高级函数

    欢迎来到《Python高级编程之旅》系列的第二篇博客!在上一篇中,我们介绍了面向对象编程的概念和优势。今天,我们将继续探索Python中的高级编程技术,重点是高级函数。高级函数是Python中非常强大和灵活的概念,可以帮助我们编写更简洁、可读性更高的代码。让我们一起

    2024年01月19日
    浏览(41)
  • 编程江湖:Python探秘之旅-----函数的魔法(三)

    项目进行到关键阶段,“云悟”,项目经理,强调了代码的模块化和重用性的重要性。她希望团队能够提高工作效率,避免重复劳动。 云悟 :(审视着代码)我们需要使这些代码更加模块化。这样,我们就可以在不同的项目中重用这些功能,而不是每次都从头开始。 龙 :(

    2024年01月25日
    浏览(49)
  • Python 二叉树算法解决二维装箱问题 (2d bin-packing problem)

    二维装箱问题 应用领域比较多,游戏开发中主要应用于贴图合并。 最近在调研图集打包工具的算法实现,看到一种实现方式是通过二叉树算法,比较朴素且有效,则立刻写用例简单测试验证下。 测试结果: (打包后的图用随机纯色色块代替) 测试代码如下:

    2024年02月16日
    浏览(32)
  • 运维工作新时代:自主编码实现运维自动化的转型之旅

    随着业务系统和底层中间件服务的复杂度不断增加,传统手工运维方式面临着诸多挑战和限制。人工编写运维脚本显得非常低效,同时手动执行运维操作存在着巨大风险。在此情况下,推动运维自动化成为运维人员必须落地实施的工作。运维同学如果可以有地方自主通过编码

    2024年02月22日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包