Беззнаковые типы в Go
Целое число можно сделать беззнаковым.
Имена таких типов начинаются с uint:
uint8, uint16, uint32,
uint64 и uint. Беззнаковое число
бывает только нулем и положительным.
Отрицательных значений у него нет.
Тип byte - это другое имя uint8.
Так делают, чтобы расширить диапазон.
Байтов столько же, сколько у типа со знаком.
Место, которое уходило на минус, отдано
большим положительным числам. У типа
int32 верхняя граница около двух
миллиардов. У типа uint32
она примерно вдвое выше: до
4294967295. Число 3000000000
в int32 не входит, а в
uint32 входит.
Тип uint проблемный, так как для него
размер ячейки зависит от компьютера.
На 32-битной системе это 4 байта, на обычном
64-битном - 8. Верхняя граница совпадает
с uint32 или с uint64.
Беззнаковый тип берут и тогда, когда минус по смыслу числа не нужен. Количество штук, длина текста, номер элемента и размер в байтах не бывают отрицательными.
Вот таблица диапазонов беззнаковых чисел:
| Тип | Байты | Диапазон |
|---|---|---|
uint8
|
1
|
от 0 до 255
|
uint16
|
2
|
от 0 до 65535
|
uint32
|
4
|
от 0 до 4294967295
|
uint64
|
8
|
от 0 до 18446744073709551615
|
uint
|
4 или 8
|
на 32 битах как uint32, на 64 битах как uint64
|
В каком диапазоне изменяются числа типа
uint16?
В каком диапазоне изменяются числа типа
uint32?
В каком диапазоне изменяются числа типа
uint?
В каком диапазоне изменяются числа типа
uint64?
Есть число -1. Помещается ли оно в диапазон
типа uint16?
Есть число 70000. Помещается ли оно в диапазон
типа uint16?
Есть число 3000000000. Помещается ли оно в диапазон
типа uint32?
Есть число -5. Помещается ли оно в диапазон
типа uint32?
Есть число -1. Помещается ли оно в диапазон
типа uint64?