《 Java:初学者指南》一书中有两个位切换的示例。在这两种情况下,作者均撰写了有关切换第6位的文章,但他以16位数字进行了演示。两个示例都使用按位运算符来更改字母大小写。
首先,他使用小写字母字符:'a' & 65503
将字符更改为'A'
。它被描述为关闭第六位。问题是二进制数字65503
等于1111 1111 1101 1111
。因此,第11位/位被关闭(他甚至在此处显示数字)。
他对大写字母和按位OR运算符所做的操作相同:'a' | 32
可以解决问题。数字32等于二进制中的0000 0000 0010 0000
。
在两种情况下,更改都是有意义的。我只是不明白为什么作者要写第六位。我知道是第11位还是第6对(在那种情况下,我希望完全将其关闭为00
或11
。
任何澄清都值得欢迎。
最佳答案
组成二进制数的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时,您将添加一个新列。
这有助于解释吗?
关于java - 16位char值的第6位在哪里?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53447096/