Python:为什么右移>>向下舍入,应该在哪里使用?

oro*_*aki 3 python operators

我从来没有使用过>><<操作符,不是因为我从来不需要它们,而是因为我不知道我是否可以使用它们,或者我应该使用它们.

100 >> 3输出12而不是12.5.为什么是这样.也许学习哪里最好使用右移会隐含地回答,但我很好奇.

Ano*_*on. 13

右移不是分裂

让我们看一下右移 实际上做了什么,它会变得清晰.

首先,回想一下,一个数字作为二进制数字的集合存储在内存中.如果我们有8位内存,我们可以存储2 00000010和5 00000101.

右移取这些数字并将它们移到右边.例如,通过一个右移我们上面两个数字会给0000000100000010分别.

请注意,最低位(最右边)完全偏离末尾,对最终结果没有影响.

  • 只是为了扩展一点,100以二进制表示为01100100,当右移3位时为00001100,即12. (2认同)
  • 当然.首先要注意的是二进制的构造类似于十进制,我们只是使用不同的基础 - 所以我们使用的是数十,数百,数千,而不是数字,数字,数字,数字等等.向左移位**在功能上等同于乘以2,其方式与在基数10数字*的末端加零相同*在功能上等于乘以10. (2认同)