HappySimple / Typora-theme-Happysimple

一款自制的Markdown主题!
MIT License
229 stars 16 forks source link

有序列表排序有问题 #6

Open long92659 opened 10 months ago

long92659 commented 10 months ago

下面的这几段文字中逻辑移位前的标号2会自动变成1,而在Typora的默认主题中序号是正确的

Java中的移位运算包括逻辑移位和算术移位两种类型,具体取决于你使用的是哪种操作符。

  1. 算术移位:使用带符号的移位操作符 >><< 进行算术移位。这些操作符会保留符号位,并根据移动的方向将符号位补充到空缺的位置上。

    • >>:右移操作,将操作数的二进制表示向右移动,最左边的位将被符号位填充。例如:-8 >> 1 将得到 -4
    • <<:左移操作,将操作数的二进制表示向左移动,右边用零填充。例如:5 << 2 将得到 20
  2. 逻辑移位:使用无符号的移位操作符 >>><<< 进行逻辑移位。这些操作符会忽略符号位,只是简单地将二进制表示向指定方向移动,并用零填充。

    • >>>:无符号右移操作,将操作数的二进制表示向右移动,左边用零填充。例如:-8 >>> 1 将得到 2147483644
    • <<<:在Java中并没有直接提供逻辑左移操作符,因为逻辑左移和算术左移的结果是相同的。

要注意的是,移位运算的结果取决于操作数的数据类型。对于整数类型,移位操作通常按照上述规则进行。但是,对于负数进行右移操作时,可能会得到不同于预期的结果,因为二进制表示中的符号位会影响结果。

HappySimple commented 10 months ago

请对比这两种书写方式:

1. 算术移位:使用带符号的移位操作符 `>>` 和 `<<` 进行算术移位。这些操作符会保留符号位,并根据移动的方向将符号位补充到空缺的位置上。
   - `>>`:右移操作,将操作数的二进制表示向右移动,最左边的位将被符号位填充。例如:`-8 >> 1` 将得到 `-4`。
   - `<<`:左移操作,将操作数的二进制表示向左移动,右边用零填充。例如:`5 << 2` 将得到 `20`。
2. 逻辑移位:使用无符号的移位操作符 `>>>` 和 `<<<` 进行逻辑移位。这些操作符会忽略符号位,只是简单地将二进制表示向指定方向移动,并用零填充。
   - `>>>`:无符号右移操作,将操作数的二进制表示向右移动,左边用零填充。例如:`-8 >>> 1` 将得到 `2147483644`。
   - `<<<`:在Java中并没有直接提供逻辑左移操作符,因为逻辑左移和算术左移的结果是相同的。

1. 算术移位:使用带符号的移位操作符 `>>` 和 `<<` 进行算术移位。这些操作符会保留符号位,并根据移动的方向将符号位补充到空缺的位置上。

- `>>`:右移操作,将操作数的二进制表示向右移动,最左边的位将被符号位填充。例如:`-8 >> 1` 将得到 `-4`。
- `<<`:左移操作,将操作数的二进制表示向左移动,右边用零填充。例如:`5 << 2` 将得到 `20`。

2. 逻辑移位:使用无符号的移位操作符 `>>>` 和 `<<<` 进行逻辑移位。这些操作符会忽略符号位,只是简单地将二进制表示向指定方向移动,并用零填充。

- `>>>`:无符号右移操作,将操作数的二进制表示向右移动,左边用零填充。例如:`-8 >>> 1` 将得到 `2147483644`。
- `<<<`:在Java中并没有直接提供逻辑左移操作符,因为逻辑左移和算术左移的结果是相同的。