java - 16位偏移和24位偏移是什么意思?我如何使用java进行这样的计算

标签 java bit-manipulation

我有一个规范,它读取的列指定了结构的 16 位偏移量,另一列指定了结构的 24 位偏移量。我正在使用 java 实现该规范。 我不清楚16位偏移/24位偏移是什么意思以及如何在java中执行此类操作。

最佳答案

听起来您有一个被分割成位系​​列的数据。

  • 第 16-23 位是“16 位偏移量”
  • 第 24 位-?是“24 位偏移量”

数据可能是一个int(32位有符号整数)或一个long(64位有符号整数),其中位序列的某些部分分配用于存储分离较小的数据。

简单获取这些值的一种方法是使用 bit maskshift ,像这样:

int mask = 0xf00; // only bits 16-23 are 1
int data;
int value = data & mask; // zero other bits
value >>= 16; // shift the value down to the end

关于java - 16位偏移和24位偏移是什么意思?我如何使用java进行这样的计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7094019/

相关文章:

java - 从父类对象调用子类方法的最佳实践

java - 无法从 selenium 获取 div 表中的行文本

c++ - 如何有效地并行设置位 vector 的位?

c - 有没有办法用按位检查 char * 是否为空

c++ - 了解 C++14 中有符号类型的按位左移

java - 如果我也想传递数据,使用 Otto (或简单的回调设计模式)最好的方法是什么?

java - 使用 Android 将文本文件上传到 Google 云端硬盘

algorithm - 在 (0,n) 范围内生成 k & x = k 的解

java - 获取 "main"java.lang.UnsupportedOperationException

c++ - 等于运算符==可以用来做校验位吗?