有序列表排序有问题
Opened this issue · 1 comments
long92659 commented
下面的这几段文字中逻辑移位前的标号2会自动变成1,而在Typora的默认主题中序号是正确的
Java中的移位运算包括逻辑移位和算术移位两种类型,具体取决于你使用的是哪种操作符。
- 算术移位:使用带符号的移位操作符
>>
和<<
进行算术移位。这些操作符会保留符号位,并根据移动的方向将符号位补充到空缺的位置上。
>>
:右移操作,将操作数的二进制表示向右移动,最左边的位将被符号位填充。例如:-8 >> 1
将得到-4
。<<
:左移操作,将操作数的二进制表示向左移动,右边用零填充。例如:5 << 2
将得到20
。
- 逻辑移位:使用无符号的移位操作符
>>>
和<<<
进行逻辑移位。这些操作符会忽略符号位,只是简单地将二进制表示向指定方向移动,并用零填充。
>>>
:无符号右移操作,将操作数的二进制表示向右移动,左边用零填充。例如:-8 >>> 1
将得到2147483644
。<<<
:在Java中并没有直接提供逻辑左移操作符,因为逻辑左移和算术左移的结果是相同的。
要注意的是,移位运算的结果取决于操作数的数据类型。对于整数类型,移位操作通常按照上述规则进行。但是,对于负数进行右移操作时,可能会得到不同于预期的结果,因为二进制表示中的符号位会影响结果。
HappySimple commented
请对比这两种书写方式:
1. 算术移位:使用带符号的移位操作符 `>>` 和 `<<` 进行算术移位。这些操作符会保留符号位,并根据移动的方向将符号位补充到空缺的位置上。
- `>>`:右移操作,将操作数的二进制表示向右移动,最左边的位将被符号位填充。例如:`-8 >> 1` 将得到 `-4`。
- `<<`:左移操作,将操作数的二进制表示向左移动,右边用零填充。例如:`5 << 2` 将得到 `20`。
2. 逻辑移位:使用无符号的移位操作符 `>>>` 和 `<<<` 进行逻辑移位。这些操作符会忽略符号位,只是简单地将二进制表示向指定方向移动,并用零填充。
- `>>>`:无符号右移操作,将操作数的二进制表示向右移动,左边用零填充。例如:`-8 >>> 1` 将得到 `2147483644`。
- `<<<`:在Java中并没有直接提供逻辑左移操作符,因为逻辑左移和算术左移的结果是相同的。
1. 算术移位:使用带符号的移位操作符 `>>` 和 `<<` 进行算术移位。这些操作符会保留符号位,并根据移动的方向将符号位补充到空缺的位置上。
- `>>`:右移操作,将操作数的二进制表示向右移动,最左边的位将被符号位填充。例如:`-8 >> 1` 将得到 `-4`。
- `<<`:左移操作,将操作数的二进制表示向左移动,右边用零填充。例如:`5 << 2` 将得到 `20`。
2. 逻辑移位:使用无符号的移位操作符 `>>>` 和 `<<<` 进行逻辑移位。这些操作符会忽略符号位,只是简单地将二进制表示向指定方向移动,并用零填充。
- `>>>`:无符号右移操作,将操作数的二进制表示向右移动,左边用零填充。例如:`-8 >>> 1` 将得到 `2147483644`。
- `<<<`:在Java中并没有直接提供逻辑左移操作符,因为逻辑左移和算术左移的结果是相同的。