Беззнаковые целые в Rust
Целое число можно сделать беззнаковым.
Имена таких типов начинаются с буквы u:
u8, u16, u32, u64,
u128 и usize. Беззнаковое число
бывает только нулем и положительным.
Отрицательных значений у него нет.
Так делают, чтобы расширить диапазон.
Байтов столько же, сколько у типа со знаком.
Место, которое уходило на минус, отдано
большим положительным числам. У типа
i32 верхняя граница около двух
миллиардов. У типа u32
она примерно вдвое выше: до
4294967295. Число 3000000000
в i32 не входит, а в
u32 входит.
Тип usize проблемный, так как для него
размер ячейки зависит от компьютера.
На 32-битной системе это 4 байта, на 64-битной
- 8. Верхняя граница совпадает с u32
или с u64.
Беззнаковый тип берут и тогда, когда минус по смыслу числа не нужен. Количество штук, длина текста, номер элемента и размер в байтах не бывают отрицательными.
Вот таблица диапазонов беззнаковых чисел:
| Тип | Байты | Диапазон |
|---|---|---|
u8
|
1
|
от 0 до 255
|
u16
|
2
|
от 0 до 65535
|
u32
|
4
|
от 0 до 4294967295
|
u64
|
8
|
от 0 до 18446744073709551615
|
u128
|
16
|
намного шире, чем у u64
|
usize
|
4 или 8
|
на 32 битах как u32, на 64 битах как u64
|
В каком диапазоне изменяются числа типа
u16?
В каком диапазоне изменяются числа типа
u32?
В каком диапазоне изменяются числа типа
usize?
В каком диапазоне изменяются числа типа
u64?
Есть число -1. Помещается ли оно в диапазон
типа u16?
Есть число 70000. Помещается ли оно в диапазон
типа u16?
Есть число 3000000000. Помещается ли оно в диапазон
типа u32?
Есть число -5. Помещается ли оно в диапазон
типа u32?
Есть число -1. Помещается ли оно в диапазон
типа u64?