我知道将数字除以2的最佳方法是向左移动一位。如果我除以2的倍数(例如8),我该怎么做,我是否移过3位,这是我的问题:
我知道这些操作可以在汇编级别完成,因为我们正在处理寄存器,我只是不知道我们是否可以在C ++中访问这些东西。
答案 0 :(得分:3)
访问整数的高/低字节,并交换它们可以用至少两种方式完成。 >>
和|
的组合,或union
的组合。
例如:
short swapped = (original<<8)|(original>>8);
将为您提供交换的2字节整数的两个字节。如果你有一个更大的整数(例如4个字节),如果需要一些特别改组的顺序,则需要更多的屏蔽和移位。
以2的倍数和右移(>>
)优化除法是一种无优化。您应该编写可读代码,清楚地了解其用途。编译器将轻松执行此类微优化。