我完全理解如何移位。我已经在纸上和代码中完成了许多示例,并且不需要任何帮助。
我正在尝试提出一些有关如何使用位移的真实示例。以下是我能想到的一些例子:
也许我能概念化的最重要的例子与字节序有关。在大端系统中,最低有效位从左侧存储,而在小端系统中,最低有效位从右侧存储。我想对于使用相反字节序策略的系统之间的文件和网络传输,必须进行某些转换。
在处理任何 n^2、n^4 等乘法时,编译器和处理器似乎可以进行某些优化。这些位只是向左移动。(相反,我想同样适用于除法、n/2、n/4 等)
在加密算法中。即使用一系列位移、反转和组合来混淆某些东西。
所有这些都是准确的例子吗?你有什么要补充的吗?我花了很多时间学习如何实现位移/重新排序/字节交换,我想知道如何实际应用它 = )
我所知道的按位移位最常见的例子是设置和清除位。
uint8_t bla = INIT_VALUE;
bla |= (1U << N); // Set N-th bit
bla &= ~(1U << N); // Clear N-th bit
Run Code Online (Sandbox Code Playgroud)