位运算器的实际应用

时间:2012-09-20 20:42:52

标签: bit-manipulation operator-keyword

  

可能重复:
  practical applications of bitwise operations

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

3 个答案:

答案 0 :(得分:1)

按位操作经常在硬件附近使用 - 打包数据,进行压缩或将多个布尔值打包成一个字节。按位运算直接映射到处理器指令,并且通常非常快。

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

或者你可以将它用作快速乘法二。 :)

答案 1 :(得分:1)

二元和二元混合的另一个有趣用法。

将摩尔斯电码包装成单个字节。 .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.

答案 2 :(得分:1)

我最近并不需要它,但是当编码pascal时,我将它用于乘除或除数,只要除数或乘法是2的幂。

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

使用c<< 4代替c * 16,c>> 4而不是c / 16来保存或检索背景的速度提高了很多倍。

用c<< 4>>检索textcolor。 4也比c& 15(bitvize和)由于某种原因。可能注册相关;)但这是我的头脑:D

但除非您正在进行校验和计算,压缩或加密,否则您可能无法做到。

即使你可以在int中多次存储位,驱动程序也可以为你优化,c#中你可以使用Flag枚举自动将位标志打包成字节,字或整数值。

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