go << >> ^ 操作符

107 阅读1分钟

<< 左移操作

x << n, 将x左移n位,相当于 x * 2^n ( x * 2ⁿ)

x <<= n 即 x = x << n, x = x*2ⁿ

5 * 8 = 5 * 2³ = 5 << 3 = 40

0101 左移3位, 右边补0

0101000

0010 1000 => 32 + 8 = 40

>> 右移操作

">>"是右移操作符,x >> n, 代表将x右移n位, 右移代表着什么(有什么作用)呢?

x >> n 即 x / 2ⁿ

  1. 2⁰位之后的bit位是直接删除吗?
  2. 浮点数,小数怎么表示?

x >>= 1 x = x >> 1

假设x=5,那么x的二进制为0101,x>>1表示x右移1位,即把最右边一位的1删掉,变为010,此时x=2; 仍然设x=5,二进制0101,x>>2表示x右移2位,把最右边两位的01去掉,变为01,此时x=1。 x>>=1等价于x=x>>1,跟x+=1等价于x=x+1是一个道理

PS: x >>= 1 相当于 x = x / 2;

负数右移

负数二进制怎么表示