为了账号安全,请及时绑定邮箱和手机立即绑定

uint64 是否需要 8 个字节的存储空间?

uint64 是否需要 8 个字节的存储空间?

Go
慕的地8271018 2021-06-10 14:08:40
官方文档说 uint64 是一个 64 位的无符号整数,这是否意味着任何 uint64 数字都应该占用 8 个字节的存储空间,无论它有多小或多大?编辑:谢谢大家的回答!当我注意到binary.PutUvarint最多消耗 10 个字节来存储一个 large 时uint64,我提出了疑问,尽管最大uint64应该只需要 8 个字节。然后我在 Golang lib 的源代码中找到了我的疑问的答案:Design note:// At most 10 bytes are needed for 64-bit values. The encoding could// be more dense: a full 64-bit value needs an extra byte just to hold bit 63.// Instead, the msb of the previous byte could be used to hold bit 63 since we// know there can't be more than 64 bits. This is a trivial improvement and// would reduce the maximum encoding length to 9 bytes. However, it breaks the// invariant that the msb is always the "continuation bit" and thus makes the// format incompatible with a varint encoding for larger numbers (say 128-bit).
查看完整描述

3 回答

?
繁星coding

TA贡献1797条经验 获得超4个赞

简单地说:是的,64 位固定大小的整数类型总是需要 8 个字节。如果不是这种情况,那将是一种不寻常的语言。

有些语言/平台支持可变长度数字类型,其中内存中的存储确实取决于值,但您不会以这种简单的方式指定类型中的位数,因为这可能会有所不同。


查看完整回答
反对 回复 2021-06-21
?
ITMISS

TA贡献1871条经验 获得超8个赞

Go 编程语言规范

数字类型

数字类型表示整数或浮点值的集合。预先声明的与体系结构无关的数字类型是:

uint64      the set of all unsigned 64-bit integers (0 to 18446744073709551615)

是的,正好是 64 位或 8 个字节。


查看完整回答
反对 回复 2021-06-21
  • 3 回答
  • 0 关注
  • 662 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信