我理解java 中的bitwise和bitshift运算符,但我不明白它们的实际用途是什么。例如,何时使用是有用的 " 〜,<<,>>,>>>,&,^,| "修改或比较值的位?
答案 0 :(得分:0)
位字段(标记)
他们是表达状态由几个人定义的最有效的方式;是或否"属性。 ACL就是一个很好的例子;如果你让4个离散的权限(读,写,执行,更改策略),最好将它存储在1个字节而不是浪费4.这些可以映射到多种语言的枚举类型为了更方便。
通过端口/套接字进行通信
始终涉及校验和,奇偶校验,停止位,流控制算法等,这通常取决于各个字节的逻辑值而不是数值,因为介质可能只能一次传输一位
压缩,加密
这两者都严重依赖于按位算法。查看deflate算法的示例 - 一切都是位,而不是字节。
有限状态机
我主要讲的是某些硬件中嵌入的类型,尽管它们也可以在软件中找到。它们本质上是组合的 - 它们可能实际上已经被编译并且#34;下到一堆逻辑门,所以它们必须表示为AND,OR,NOT等。
图形
这里的空间不足以进入图形编程中使用这些运算符的每个区域。 XOR(或^)在这里特别有趣,因为第二次应用相同的输入将撤消第一次。较旧的GUI过去依赖于此选择突出显示和其他叠加,以消除昂贵的重绘需求。它们在慢速图形协议(即远程桌面)中仍然有用。
这些只是我提出的前几个例子 - 这不是一个详尽的清单。