Беззнаковые целые в C#
Целое число можно сделать беззнаковым.
В C# для этого есть типы uint, ulong
и ushort: буква U в имени означает
беззнаковый вариант. Беззнаковое число бывает только нулем
и положительным. Отрицательных значений
у него нет.
Так делают, чтобы расширить диапазон возможных чисел. Беззнаковый тип занимает столько же байтов, сколько и тип со знаком. Но так как отрицательные числа мы не берем, то положительных сможем взять в два раза больше.
То есть разница проявляется в том, как мы интерпретируем те же байты - в зависимости от нашей интерпретации получается другой возможный диапазон. Байтов столько же и комбинаций битов столько же - меняется набор допустимых чисел, а верхняя граница для положительных выше.
Для примера у типа
int верхняя граница около двух
миллиардов. У типа uint
она примерно вдвое выше: до
4294967295. Число 3000000000
в int не входит, а в
uint входит.
Беззнаковый тип берут и тогда, когда минус по смыслу числа не нужен. Количество штук, длина текста, номер элемента и размер в байтах не бывают отрицательными.
Вот таблица диапазонов беззнаковых чисел:
| Тип | Байты | Диапазон |
|---|---|---|
ushort
|
2
|
от 0 до 65535
|
uint
|
4
|
от 0 до 4294967295
|
ulong
|
8
|
от 0 до 18446744073709551615
|
В каком диапазоне изменяются числа типа
ushort?
В каком диапазоне изменяются числа типа
uint?
В каком диапазоне изменяются числа типа
ulong?
В каком диапазоне изменяются числа типа
ulong?
Есть число -1. Помещается ли оно в диапазон
типа ushort?
Есть число 70000. Помещается ли оно в диапазон
типа ushort?
Есть число 3000000000. Помещается ли оно в диапазон
типа uint?
Есть число -5. Помещается ли оно в диапазон
типа uint?
Есть число -1. Помещается ли оно в диапазон
типа ulong?