我已经编程了好几年了,我一直想知道按位运算符的实际应用 在我的编程经验中,我不必使用按位运算符。 它们什么时候最常用? 在我的编程生涯中,我有必要学习这些吗? 谢谢。 友好, 詹姆斯
答案 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枚举自动将位标志打包成字节,字或整数值。
所以我猜想,既然你没有找到用途,你可能不会在他们有意义的领域工作。