2
我想知道是否需要屏蔽一個數字,然後在執行位移時檢索存儲在某個字節中的值。您是否需要在檢索存儲在特定字節中的值之前屏蔽某個數字?
舉個例子來說,這個代碼:
short b1 = 1;
short b2 = 2;
short b0 = (short)((b1 << 8) | b2); //store two values in one variable
Console.WriteLine(b0); //b1 and b2 combined
Console.WriteLine((b0 & (255 << 8)) >> 8); //gets the value of b1
就我個人而言,做右移下降是小於你已經轉移的位數的所有位。因此,將b0
右移8位將丟棄b2
的8位,只剩下b1
。
Console.WriteLine(b0 >> 8); //this also gets b1!!
我想了解,是否有任何需要轉移到獲得b1
前值掩蓋b0
與255 << 8
?
NB:
唯一需要我可以檢索值之前掩蔽想到的是,如果有其他存儲在較高字節,如試圖找回的b2
價值的東西在這個代碼將用於:
Console.WriteLine(b0 & 255); //gets the value of b2
如果你想讓'b1'和'b2''字節'以及'b0'''ushort'''''',那麼這將是非常明顯的。右移「ushort」不會傳播符號位。 – 2012-08-08 01:15:27