From d7924789d7898730b94e00a3682fb397cd2cf026 Mon Sep 17 00:00:00 2001 From: Shuhao Zhang <594422141@qq.com> Date: Tue, 1 Oct 2019 16:10:28 +0800 Subject: [PATCH] :bug: fix typo --- docs/math/bit.md | 42 ++++++++++++++++++++---------------------- 1 file changed, 20 insertions(+), 22 deletions(-) diff --git a/docs/math/bit.md b/docs/math/bit.md index fd9d3b29..82a2cd92 100644 --- a/docs/math/bit.md +++ b/docs/math/bit.md @@ -16,19 +16,18 @@ `^` 运算的逆运算是它本身,也就是说两次异或同一个数最后结果不变,即 `(a ^ b) ^ b = a` 。 -> 举例: -> -> $$ -> \begin{aligned} -> &5 &=(101)_2\\ -> &6 &=(110)_2\\ -> &5\tt\,\text{&}\,\rm6 &=(100)_2 &=\ 4\\ -> &5\tt\,\text{|}\,\rm6 &=(111)_2 &=\ 7\\ -> &5\tt\,\text{^}\,\rm6 &=(011)_2 &=\ 3\\ -> \end{aligned} -> $$ +举例: $$ +\begin{aligned} +&5 &=(101)_2\\ +&6 &=(110)_2\\ +&5\tt\,\text{&}\,\rm6 &=(100)_2 &=\ 4\\ +&5\tt\,\text{|}\,\rm6 &=(111)_2 &=\ 7\\ +&5\tt\,\text{^}\,\rm6 &=(011)_2 &=\ 3\\ +\end{aligned} +$$ + ## 取反 取反是对 1 个数 $num$ 进行的计算。 @@ -37,8 +36,9 @@ $$ 补码——正数的补码为其(二进制)本身,负数的补码是其(二进制)取反后 $+1$ 。 -> 举例: -> $$ +举例: + +$$ \begin{aligned} 5=(0000\ 0101)_2\\ 5\ \text{的补码} =(1111\ 1010)_2\\ @@ -60,15 +60,14 @@ $$ 举例: -> $$ -> \begin{aligned} -> &5&=&\ (00000101)_2\\ -> &5\,<<\,1&=&\ (00001010)_2\,&=&\ 10\\ -> &5\,>>\,1&=&\ (00000010)_2\,&=&\ 2 -> \end{aligned} -> $$ - $$ +\begin{aligned} +&5&=&\ (00000101)_2\\ +&5\,<<\,1&=&\ (00001010)_2\,&=&\ 10\\ +&5\,>>\,1&=&\ (00000010)_2\,&=&\ 2 +\end{aligned} +$$ + 在 C++ 中,右移操作中右侧多余的位将会被舍弃。而左侧较为复杂:对于无符号数,会在左侧补 0;而对于有符号数,则会用最高位的数补齐(Replicate most significant bit on left)。 注意: @@ -245,4 +244,3 @@ void swap(int &a, int &b) { ## 参考 位运算技巧: -$$ -- 2.11.0