簡體   English   中英

該二進制文檔是什么意思?

[英]What does this binary documentation mean?

我正在嘗試解碼某人的字節數組,而我被困在這一部分:

&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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM