首页 > 解决方案 > 16 位 char 值的第 6 位在哪里?

问题描述

《 Java: A Beginners Guide》一书中有两个位切换的例子。在这两种情况下,作者都写了关于切换第 6 位的文章,但他在 16 位上进行了演示。这两个示例都使用按位运算符来更改字母大小写。

  1. 首先,他对小写字符进行操作:'a' & 65503将 char 更改为'A'. 它被描述为关闭第 6 位。问题是数字65503等于1111 1111 1101 1111二进制。因此第 11 位数字/位被关闭(他甚至在那里显示数字)。
  2. 他对大写字母和按位或运算符'a' | 32所做的相同:成功了。数字 32 等于0000 0000 0010 0000二进制。

在这两种情况下,这种变化都是有意义的。我只是不明白作者为什么要写第 6 位。我会理解它是用于第 11 位还是第 6 对(在这种情况下,我希望将其完全关闭为00or 11

任何澄清都非常受欢迎。

标签: javabit-manipulationbitwise-operators

解决方案


第 6 位的位置可能在几个位置,具体取决于您采用的约定:

  1. 将最左边的位计数为零,然后向右移动
  2. 将最左边的位计数为第一位,然后向右移动
  3. 将最右边的位计数为零,然后向左移动
  4. 将最右边的位计数为第一位,然后向左移动
  5. (其他约定可能可用)

为了清楚起见,作者确实应该定义他使用的是哪一个(并且可能会在文本的其他地方定义)。但显然,他的意思是第 4 项。

0000 0000 0010 0000
            65 4321

推荐阅读