Golang Go语言中的>> <<运算符请教

发布于 1周前 作者 sinazl 来自 Go语言

Golang Go语言中的>> <<运算符请教

这个运算符是怎么计算的,

https://play.golang.org/p/FQZY2TJ8cvC

package main

import "fmt" const chunkSize int64 = 1 << 24 const chunkSize2 int64 = 3 << 1 func main() {

fmt.Println("Hello, 世界")
fmt.Println(chunkSize)
fmt.Println(chunkSize2)

}

输出 Hello, 世界 16777216 6

3<<1 怎么得出的 6


更多关于Golang Go语言中的>> <<运算符请教的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html

32 回复

rt

更多关于Golang Go语言中的>> <<运算符请教的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


0011 = 3
0110 = 6
我寻思着,写代码不要学点计算机基础吗?

右移 左移 不知道么?
而且很多语言都这样写的啊

位运算啊。。

可以这样记:左移 n 位等同于乘以 2 的 n 次幂
emmm 3*2=6

看标题我以为这个运算符有坑,进来一看。。。是我多虑了。

我记得是有坑的 右移带符号的数 左边会补齐符号

这是基础中的基础吧。。

太可怕了,现在学写 Go 的都不用学任何的计算机基础了

位运算了解一下,跟语言无关

楼主发的贴……大概是把 V 站当狗哥了……

搜了一下,好多 go 语言教程讲到操作符的时候,对位运算符一笔带过,初学者看到不懂的还是应该多在网上找找答案。

还以为<< >>是啥高级功能,居然跟 C 一个样,太意外了

如果是学的第一门语言,先跑起来,后补基础,也无所谓。

右移本来就是这样设计,算术右移了解一下

培训班严重拉低了程序员的门槛

这点基础都不要了吗?写什么代码啊

过分了 兄弟

左右移位运算啊,天那

兄弟连基础都没学过吗?

因为这玩意就没有讲解的必要.总不能把=-*/都教一遍吧.

https://book.douban.com/subject/5333562/

老哥,向你推荐这本书。位运算以及数值的表示,第二章就有讲。

位移运算符在日常使用中频率非常低吧,感觉不会也正常

左移一位,等于乘以 2,3 乘以 2 就是 6

#23 看做什么了,如果和硬件强相关的话,应该会用到很多。

python php 用了很多年了 从没用过位移运算

不厚道地说一句,这水平用 go 可能用错了。。。

兄弟位运算符都没见过,怎么学的啊!!

在Go语言中,>><< 是位运算符,分别用于执行右移和左移操作。这些运算符对整数类型(如 int, uint, int8, uint32 等)的二进制表示进行操作。

  1. 左移运算符 <<

    • 将一个数的各二进制位全部左移若干位,由操作符右边的数指定移动的位数。
    • 左移一位相当于乘以2,因为二进制数向左移动一位会在最低位补0。
    • 例如,5 << 2 的结果是 20,因为 5(二进制 101)左移两位变成 10100(二进制),即 20(十进制)。
  2. 右移运算符 >>

    • 将一个数的各二进制位全部右移若干位,由操作符右边的数指定移动的位数。
    • 右移一位相当于除以2(对于无符号整数),因为二进制数向右移动一位会丢弃最低位。
    • 对于有符号整数,右移通常执行算术右移,即符号位(最高位)会被复制来填充空出的位。
    • 例如,20 >> 2 的结果是 5,因为 20(二进制 10100)右移两位变成 101(二进制),即 5(十进制)。

在使用这些运算符时,需要注意移位操作的位数不应超过操作数的位数,否则可能导致未定义行为或运行时错误。此外,了解移位操作对性能和代码可读性的影响也很重要。

回到顶部