在谈论按位运算符时,符号“0xf00f”是什么意思?

时间:2012-03-11 22:27:44

标签: bitwise-operators

复制了Java参考手册:

  

例如,表达式的结果:   0xff00 & 0xf0f0   是:   0xf000

     

表达式的结果:   0xff00 ^ 0xf0f0   是:   0x0ff0

     

表达式的结果:   0xff00 | 0xf0f0   是:   0xfff0

这些字母和数字放在一起意味着什么?

1 个答案:

答案 0 :(得分:10)

0x开头的数字位于hexadecimal (base 16) notation。他们使用数字0-9表示十六进制数字0-9,并使用字母A-F表示十六进制数字1015

十六进制符号比十进制更方便显示位操作,因为基数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

您应该可以更轻松地关注剩余的操作^|