我一直在尝试在业余时间学习C语言,其他语言(C#,Java等)具有相同的概念(通常是相同的运算符)......
我想知道是,在核心层,是什么位移(<<,>>,>>>)这样做,可以帮助它什么问题解决,和周围的弯曲什么潜伏的陷阱?换句话说,一个绝对的初学者指导比特移位的所有优点.
您是否曾经在实际编程项目中使用位移?大多数(如果不是全部)高级语言都有移位运算符,但什么时候你真的需要使用它们?
我完全理解如何移位。我已经在纸上和代码中完成了许多示例,并且不需要任何帮助。
我正在尝试提出一些有关如何使用位移的真实示例。以下是我能想到的一些例子:
也许我能概念化的最重要的例子与字节序有关。在大端系统中,最低有效位从左侧存储,而在小端系统中,最低有效位从右侧存储。我想对于使用相反字节序策略的系统之间的文件和网络传输,必须进行某些转换。
在处理任何 n^2、n^4 等乘法时,编译器和处理器似乎可以进行某些优化。这些位只是向左移动。(相反,我想同样适用于除法、n/2、n/4 等)
在加密算法中。即使用一系列位移、反转和组合来混淆某些东西。
所有这些都是准确的例子吗?你有什么要补充的吗?我花了很多时间学习如何实现位移/重新排序/字节交换,我想知道如何实际应用它 = )