位运算符的实际应用

可能重复:
按位操作的实际应用

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


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

如果您正在使用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.

我最近并不需要它,但是当编码帕斯卡时,我使用它来乘除或除数,除数或乘法是2的幂。

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

如果c * 16和c >> 4而不是c / 16来保存或检索背景,则使用c << 4代替速度要快很多倍。

由于某些原因,检索c << 4 >> 4的textcolor也比c&15(bitvize和)更快。 可能与登记有关;)但那是我头上的方式:D

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

即使你可以将int存储在int中,驱动程序也可以以任何方式为你优化内容,而在c#中,可以使用Flag枚举将位标志自动装入字节,字或整数值。

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

链接地址: http://www.djcxy.com/p/57601.html

上一篇: Practical Application of Bitwise Operators

下一篇: Why should I use bitwise/bitmask in PHP?