《 Java:初学者指南》一书中有两个位切换的示例。在这两种情况下,作者均撰写了有关切换第6位的文章,但他以16位数字进行了演示。两个示例都使用按位运算符来更改字母大小写。


首先,他使用小写字母字符:'a' & 65503将字符更改为'A'。它被描述为关闭第六位。问题是二进制数字65503等于1111 1111 1101 1111。因此,第11位/位被关闭(他甚至在此处显示数字)。
他对大写字母和按位OR运算符所做的操作相同:'a' | 32可以解决问题。数字32等于二进制中的0000 0000 0010 0000


在两种情况下,更改都是有意义的。我只是不明白为什么作者要写第六位。我知道是第11位还是第6对(在那种情况下,我希望完全将其关闭为0011

任何澄清都值得欢迎。

最佳答案

组成二进制数的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/

10-13 04:52