Чи займає uint64 8 байт пам'яті?

Офіційний документ говорить, що uint64 є цілим числом без знака 64-біт, чи означає це, що будь-який номер uint64 повинен займати 8 байтів, незалежно від того, наскільки малий він і наскільки він великий?

Редагувати:

Дякуємо за відповідь кожного!

Коли я помітив, що binary. 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).
7

7 Відповіді

Відповідно до http://golang.org/ref/spec#Size_and_alignment_guarantees :

type                                 size in bytes

byte, uint8, int8                     1
uint16, int16                         2
uint32, int32, float32                4
uint64, int64, float64, complex64     8
complex128                           16

Так, так, uint64 завжди візьме 8 байт.

6
додано

Відповідно до http://golang.org/ref/spec#Size_and_alignment_guarantees :

type                                 size in bytes

byte, uint8, int8                     1
uint16, int16                         2
uint32, int32, float32                4
uint64, int64, float64, complex64     8
complex128                           16

Так, так, uint64 завжди візьме 8 байт.

6
додано

Простіше кажучи: так, 64-бітний тип цілочисельного фіксованого розміру завжди займає 8 байт. Це була б незвичайна мова, де це не так.

Існують мови/платформи, які підтримують числові типи змінної довжини, де сховище в пам'яті має залежність від значення, але тоді ви не визначите кількість бітів у цьому типі таким чином, як це може змінюватися.

1
додано

Специфікація мови програмування Go

     

Цифрові типи

     

Цифровий тип являє собою набори цілих чи плаваючих крапок.   Передвстановленими числовими типами, що не залежать від архітектури, є:

 uint64 набір усіх беззнакових цілих чисел (від 0 до 18446744073709551615)
 

Так, рівно 64 біта або 8 байт.

1
додано

Специфікація мови програмування Go

     

Цифрові типи

     

Цифровий тип являє собою набори цілих чи плаваючих крапок.   Передвстановленими числовими типами, що не залежать від архітектури, є:

 uint64 набір усіх беззнакових цілих чисел (від 0 до 18446744073709551615)
 

Так, рівно 64 біта або 8 байт.

1
додано

Просто пам'ятайте просте правило, тип змінної зазвичай оптимізований, щоб відповідати певному простору пам'яті, а мінімальний обсяг пам'яті - 1 біт. І 8 біт (с) = 1 байт (и):

Тому 64bit (s) = 8 байт (ів)

0
додано

Просто пам'ятайте просте правило, тип змінної зазвичай оптимізований, щоб відповідати певному простору пам'яті, а мінімальний обсяг пам'яті - 1 біт. І 8 біт (с) = 1 байт (и):

Тому 64bit (s) = 8 байт (ів)

0
додано
IT KPI Go
IT KPI Go
59 учасників