[英]What does this binary documentation mean?
我正在嘗試解碼某人的字節數組,而我被困在這一部分:
< state > ::= "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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.