Java:初学者指南一书中有两个位切换的示例。在这两种情况下,作者均撰写了有关切换第6位的文章,但他以16位数字进行了演示。两个示例都使用按位运算符来更改字母大小写。
'a' & 65503
将字符更改为'A'
。它被描述为关闭第六位。问题是二进制数字65503
等于1111 1111 1101 1111
。因此,第11位/位被关闭(他甚至在此处显示数字)。'a' | 32
可以解决问题。数字32等于二进制中的0000 0000 0010 0000
。在两种情况下,更改都是有意义的。我只是不明白为什么作者要写第六位。我想知道是用于第11位还是第6对(在那种情况下,我希望完全将其关闭为00
或11
。
任何澄清都值得欢迎。
答案 0 :(得分:3)
第6位的位置可能在几个位置,具体取决于您采用的惯例:
为清楚起见,作者应该确实定义了他正在使用的哪一个(在文本中的其他地方也可以这样做)。但显然,他的意思是第4项。
minprice
答案 1 :(得分:2)
组成二进制数的0和1称为位。这些位从右开始并向左移动:
所以0010 0000
:
8th bit 7th bit 6th bit 5th bit 4th bit 3rd bit 2nd bit 1st bit
0 0 1 0 0 0 0 0
十进制的读取方式与二进制相同:
3754
(以十进制表示):
(3 x 1000) | (7 x 100) | (5 x 10) | (4 x 1)
156
以二进制= 10011100
(1 x 128)|(0 x 64)|(0 x 32)|(1 x 16)|(1 x 8)|(0 x 4)|(0 x 2)|(0 x 1)
以十进制表示时,当幂数为10时,会在数字的开头(即右边)添加一个新列。
在二进制文件中,当幂数为2时,您将添加一个新列。
这有助于解释吗?