【问题标题】:Practical Application of Bitwise Operators [duplicate]位运算符的实际应用 [重复]
【发布时间】:2012-09-20 20:42:52
【问题描述】:

可能重复:
practical applications of bitwise operations

我已经编程好几年了,我一直想知道按位运算符的实际应用。
在我的编程经验中,我不必使用按位运算符。 它们最常在什么时候使用? 在我的编程生涯中,我有必要学习这些吗? 谢谢你。 友好地, 詹姆斯

【问题讨论】:

  • 进行任何类型的低级工作,在这些工作中处理二进制文件,您会发现它们真正很有用。根据您使用的语言,您通常可以将位域打包成整数并节省大量内存。

标签: bit-manipulation operator-keyword


【解决方案1】:

位运算经常在靠近硬件的地方使用——在打包数据、进行压缩或将多个布尔值打包成一个字节时。按位运算直接映射到处理器指令,而且速度通常非常快。

如果您正在使用 I/O 或设备接口,则按位运算变得非常必要 - 将位域的各个部分分离为重要数据。

或者您可以将其用作快速乘以二。 :)

【讨论】:

    【解决方案2】:

    二进制和位旋转的另一个有趣用法。

    将摩尔斯电码打包成一个字节。 .0- 是 1。

    A = .- 
    A = 00000001xB
    // Add a 'start bit'
    
    A = 00000101xB
    

    将位移动 8 次左右,找到起始位后开始播放声音。

        +------- Monitor this position
        V
    A = 00000101 // Starting off
    A = 00001010 // Nothing yet
    A = 00010100 // Still nothing
    A = 00101000 // WOw, a lot of nothing
    A = 01010000 // Our boring life, we do nothing
    A = 10100000 // Wow! A start bit! Prep to play sound.
    A = 01000000 // Play a short
    A = 10000000 // And play a long.
    

    【讨论】:

      【解决方案3】:

      我最近不需要它,但在编写帕斯卡时,只要除数或乘法是 2 的幂,我就用它来乘或除。

      颜色存储在一个字节中,文本颜色在低 4 位,背景颜色在高 4 位。

      使用 c > 4 代替 c / 16 来保存或检索背景要快很多倍。

      出于某种原因,使用 c > 4 检索 textcolor 也比 c & 15 (bitvize and) 更快。可能注册相关;)但那是我头上的方式:D

      但除非您进行校验和计算、压缩或加密,否则您可能无需这样做。

      即使您可以多次将位存储在 int 中,驱动程序也可以以任何方式为您优化事物,并且在 c# 中,您可以使用 Flag 枚举自动将位标志打包成字节、字或整数值。

      所以我猜,既然你还没有找到用途,你可能没有在它们有意义的领域工作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多