求二进制中1的个数,算法看不懂!请教!

lishuailw · · 330 次点击 · 开始浏览    置顶

```go package main import "fmt" var pc [256]byte func init() { for i := range pc { //这句核心语法我是实在看不懂了,这里的i到底等于什么值啊?是ha=27对应的二进制数“11011”还是啥?这里的i不是只是对应数字的序列号吗?为啥是i/2?为啥是byte(i&1)? pc[i] = pc[i/2] + byte(i&1) } } func main() { var ha uint64 ha=27 fmt.Printf("二进制:%b\n",ha) shu:=pc[ha] fmt.Printf("shu的值:%v\n",shu) } ``` 结果 ```go 二进制:11011 shu的值:4 ```

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:701969077

330 次点击  
加入收藏 微博
4 回复  |  直到 2022-01-04 16:33:51
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传