我目前正在學習按位運算符,並且在「Java完整引用第九版」一書中遇到以下示例。使用右移運算符掩蔽符號擴展>>
我明白什麼是右移運算符>>,但我不完全確定這個例子是如何實際工作的(可能我不明白如何>>工作)。有人請向我解釋一下嗎?
有時,當您將它們移動到右側時,不希望簽名擴展值。例如,以下程序 將字節值轉換爲其十六進制字符串表示形式。注意 通過將其與0x0f進行AND運算以將任何 符號擴展位丟棄,以使該值可用作 十六進制字符數組的索引,從而屏蔽移位的值。
// Masking sign extension.
class HexByte {
static public void main(String args[]) {
char hex[] = {
'0', '1', '2', '3', '4', '5', '6', '7',
'8', '9', 'a', 'b', 'c', 'd', 'e', 'f'
};
byte b = (byte) 0xf1;
System.out.println("b = 0x" + hex[(b >> 4) & 0x0f] + hex[b & 0x0f]);
}
}
開始解釋這將是有益的知道,如果你有二進制,十進制和十六進制的知識之前?如果你知道如何在這三個系統之間轉換數字,解釋要容易得多^^ –
@MeinName我明白不同編號系統之間的區別。我可以在它們之間做一些基本的轉換,但有一定的時間和思考:) – Thor