gpt4 book ai didi

java - 这个二进制文档是什么意思?

转载 作者:行者123 更新时间:2023-12-01 14:38:29 25 4
gpt4 key购买 nike

我正在尝试解码某人的字节数组,但我陷入了这部分:

&lt state &gt ::= "01" <i>(2 bits) for A</i>
"10" <i>(2 bits) for B</i>
"11" <i>(2 bits) for C</i>

我认为这需要我查看下一个字节的接下来的 2 位。这是否意味着字节的最低或最高有效数字?我想我会扔掉最后 6 位,如果它意味着最不重要的话?

我找到了这个用于查看字节位的代码:

for (int i = 0; i < byteArray.Length; i++)
{
byte b = byteArray[i];
byte mask = 0x01;
for (int j = 0; j < 8; j++)
{
bool value = b & mask;
mask << 1;
}
}

有人可以详细说明这到底是做什么的吗?

最佳答案

只是给你一个开始:

要提取字节的各个位,可以使用“&”,称为按位与运算符。按位与运算的意思是“保留两侧设置的所有位”。例如。当您计算两个字节的按位与时,例如00000011 & 00000010,那么结果就是 00000010,因为两边都只设置了倒数第二位的位。

在 Java 编程语言中,相同的示例如下所示:

int a = 3;
int b = 2;
int bitwiseAndResult = a & b; // bitwiseAndResult will be equal to 2 after this

现在要检查某个 int 的第 n 位是否已设置,您可以这样做:

int intToExamine = ...;
if ((intToExamine >> n)) & 1 != 0) {
// here we know that the n'th bit was set
}

>> 称为位移运算符。它只是将位从左向右移动,如下所示:00011010 >> 2 将得到结果 00000110。

所以从上面你可以看到,为了提取某个值的第n位,你首先将第n位移动到位置0(注意第一位是位0,而不是位1),然后您可以使用按位与运算符 (&) 来仅保留该位 0。

以下是按位和移位运算符的一些简单示例: http://www.tutorialspoint.com/java/java_bitwise_operators_examples.htm

关于java - 这个二进制文档是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16241552/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com