我知道将数字除以 2 的最佳方法是向左移动一位。如果我除以 2 的倍数(例如 8),我该怎么办,我移动 3 位,这是我的问题:
- 如何在 C++ 中执行此类操作,位移动?
- 如果我想交换它们的值,如何访问 int 的高位字节和 int 的低位字节?
我知道这些操作可以在汇编级别完成,因为我们正在处理寄存器,我只是不知道我们是否可以在 C++ 中访问这些东西。
最佳答案
访问整数的高位/低位字节并交换它们可以至少两种方式完成。 >>>
和 |
的组合,或者与 union
的组合。
例如:
short swapped = (original<<8)|(original>>8);
将为您提供交换的 2 字节整数的两个字节。如果您有一个更大的整数(例如 4 个字节),如果所有字节都需要以某种特别打乱的顺序排列,则需要进行更多的屏蔽和移位。
用右移优化 2 的倍数除法 (>>>
) 是非优化。您应该编写可读代码,清楚地了解其意图。编译器将毫不费力地执行此类微优化。
关于c++ - 除以 2 的因子和字节操作 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13765273/