复制了Java参考手册:
例如,表达式的结果:
0xff00 & 0xf0f0
是:0xf000
表达式的结果:
0xff00 ^ 0xf0f0
是:0x0ff0
表达式的结果:
0xff00 | 0xf0f0
是:0xfff0
这些字母和数字放在一起意味着什么?
答案 0 :(得分:10)
以0x
开头的数字位于hexadecimal (base 16) notation。他们使用数字0-9
表示十六进制数字0-9
,并使用字母A-F
表示十六进制数字10
到15
。
十六进制符号比十进制更方便显示位操作,因为基数16是2^4
,所以一个数字对应四位;按位运算的结果仅限于一位数;他们不会“流血”到相邻的数字。
二进制到十六进制的转换表如下:
0000 - 0
0001 - 1
0010 - 2
0011 - 3
0100 - 4
0101 - 5
0110 - 6
0111 - 7
1000 - 8
1001 - 9
1010 - A
1011 - B
1100 - C
1101 - D
1110 - E
1111 - F
您可以使用此表直接替换数字,将十六进制数转换为二进制数。例如,0xF0F0
在二进制文件中变为1111000011110000
。
有了这些替换规则,您可以按照二进制文档中的文本进行操作:
0xff00& 0xf0f0是:0xf000
变为
1111 1111 0000 0000
& 1111 0000 1111 0000
---------------------
1111 0000 0000 0000
在二进制文件中它更有意义:只有当两个操作数在相应的位中都有&
时,按位1
的结果才是1
;否则,结果为0
。
您应该可以更轻松地关注剩余的操作^
和|
。