首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java 16位对齐

Java 16位对齐
EN

Stack Overflow用户
提问于 2013-05-28 15:38:29
回答 2查看 269关注 0票数 3

我目前正在处理一些整数值,这些值表示文件中的偏移量,我需要在16位边界上对齐数字,但是我有点不确定如何做到这一点。

例如:

代码语言:javascript
复制
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缺少的东西。

例如:

代码语言:javascript
复制
180725 % 16 = 5
16 - 5 = 11
180725 aligned to 16-bits is: 180736

有人能确认我做得对吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-28 15:47:08

是的,那就行了。16位的边界对齐只是确保它将在16的倍数上。你正在做的是确保这个值在下一个16的值上,被舍入。

代码语言:javascript
复制
// 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
票数 2
EN

Stack Overflow用户

发布于 2013-05-28 16:40:37

另一份答复/评论叙述了两种可能性。以下是完整的实现:

代码语言:javascript
复制
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;
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16796084

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档