当前位置:   article > 正文

位运算符,位移运算符,交换变量,go语言_go int 移位

go int 移位

位运算符,位与,位或,异或。

位与是同1为1,其余为0。

位或是同0为0,其余为1。

异或是相同为0,不同为1。

将a和b转为二进制,结果为:36,63,27

  1. func main() {
  2. a := 62 //111110
  3. b := 37 //100101
  4. //位与
  5. fmt.Println(a & b)
  6. //位或
  7. fmt.Println(a | b)
  8. //异或
  9. fmt.Println(a ^ b)
  10. }

位移运算符,左移运算符,右移运算符

左移运算符:<<高位丢弃,低位补0,四位一组,若是一组不足四位的,前面补零。

右移运算符:>>低位丢弃,高位补0

左移运算符,值左移n次=值乘以2的n次幂,比如下面的例子,a的值左移1次,就是a乘以2的1次幂。

  1. func main() {
  2. a := 99
  3. b := a << 1
  4. fmt.Println(b)
  5. }

但下面这个例子又有所不同

  1. func main() {
  2. var a int8 = 98
  3. b := a << 1
  4. fmt.Println(b)
  5. }

因为int8的值是有限的,只有-128~127这个范围,而98左移一位是196,超出了int8的范围,将196转换为二进制是1100100,最左边的是原始符号位,现在原始符号位为1,原始符号位1代表负数,0代表正数,现在它是负数的补码,用十进制196减1后,它的二进制是11000011,原始符号位不变,后面取反,成为了10111100,最终的结果为-60。

原始符号位是不能参与计算的。

右移运算符:值右移n次=值除以2的n次幂,比如下面例子,a的值右移2次,也就是a除以2的2次幂。

  1. func main() {
  2. var a int8 = 30
  3. b := a >> 2
  4. fmt.Println(b)
  5. }

因为是整型,所以最后的结果也是整型。

交换变量,在go语言中提供了最简单的方式,比如下面代码:

  1. func main() {
  2. a := 10
  3. b := 22
  4. a, b = b, a
  5. fmt.Println(a, b)
  6. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/790233
推荐阅读
相关标签
  

闽ICP备14008679号