java - 16 位 char 值的第 6 位在哪里?
问题描述
《 Java: A Beginners Guide》一书中有两个位切换的例子。在这两种情况下,作者都写了关于切换第 6 位的文章,但他在 16 位上进行了演示。这两个示例都使用按位运算符来更改字母大小写。
- 首先,他对小写字符进行操作:
'a' & 65503
将 char 更改为'A'
. 它被描述为关闭第 6 位。问题是数字65503
等于1111 1111 1101 1111
二进制。因此第 11 位数字/位被关闭(他甚至在那里显示数字)。 - 他对大写字母和按位或运算符
'a' | 32
所做的相同:成功了。数字 32 等于0000 0000 0010 0000
二进制。
在这两种情况下,这种变化都是有意义的。我只是不明白作者为什么要写第 6 位。我会理解它是用于第 11 位还是第 6 对(在这种情况下,我希望将其完全关闭为00
or 11
。
任何澄清都非常受欢迎。
解决方案
第 6 位的位置可能在几个位置,具体取决于您采用的约定:
- 将最左边的位计数为零,然后向右移动
- 将最左边的位计数为第一位,然后向右移动
- 将最右边的位计数为零,然后向左移动
- 将最右边的位计数为第一位,然后向左移动
- (其他约定可能可用)
为了清楚起见,作者确实应该定义他使用的是哪一个(并且可能会在文本的其他地方定义)。但显然,他的意思是第 4 项。
0000 0000 0010 0000
65 4321
推荐阅读
- laravel - Laravel 7发布并获得不同的密钥到公共密钥
- r - 如何在 R 中重新排列数组的维度?
- python - 使用 pip 安装 matplotlib 的问题
- html - 如何使我的动画 gif 的大小更小 (HTML)
- git - 使用来自 passport.js 的 oauth 令牌的 Git 克隆(Github)
- angular - 使用 AGM 在谷歌地图上加载图像
- python - PySimpleGui:在 GUI 中显示控制台输出
- c++ - 派生的公共类不继承受保护的变量
- r - 在 R 中编写一个 for 循环,用相关测试的输出(估计值和置信区间)填充矩阵?
- functional-dependencies - BCNF 中的依赖保持分解