我目前正在学习按位运算符,并且在“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