我目前正在处理一些整数值,这些值表示文件中的偏移量,我需要在16位边界上对齐数字,但是我有点不确定如何做到这一点。
例如:
First number: 89023
16-bit aligned: 89024
Second number: 180725
16-bit aligned: 180736
Third number: 263824
Already 16-bit aligned, don't need to change it.这可能是我的数学不及格,但如果有人能建议如何用Java实现这一点,我将不胜感激。
谢谢!
更新
我想我刚刚解决了它,这只是一个用16调整值的问题,然后计算出16缺少的东西。
例如:
180725 % 16 = 5
16 - 5 = 11
180725 aligned to 16-bits is: 180736有人能确认我做得对吗?
发布于 2013-05-28 15:47:08
是的,那就行了。16位的边界对齐只是确保它将在16的倍数上。你正在做的是确保这个值在下一个16的值上,被舍入。
// find how far off of alignment you are, 0-15
offset = num % 16
// determine how much further you need to move the value to achieve 16 bit alignment
// only use if offset > 0, otherwise you are already good
val = 16 - offset发布于 2013-05-28 16:40:37
另一份答复/评论叙述了两种可能性。以下是完整的实现:
public static int getAlignment_modulus() {
int offset = num % 16;
int result = offset == 0 ? num : num + 16 - offset;
return result;
}
public static int getAlignment_bitOps() {
return (num + 15) & ~15;
}https://stackoverflow.com/questions/16796084
复制相似问题