Я знаю о int
и long
(32-разрядных и 64-разрядных числах), но что такое uint
и ulong
?
В чем разница между "int" и "uint" / "long" и "ulong"?
Ответ 1
Примитивные типы данных с префиксом "u" представляют собой неподписанные версии с одинаковыми размерами бит. Эффективно это означает, что они не могут хранить отрицательные числа, но, с другой стороны, они могут хранить положительные числа в два раза больше, чем их подписанные копии. У подписанных аналогов нет префикса "u".
Пределы для int (32 бит):
int: –2147483648 to 2147483647
uint: 0 to 4294967295
И для длинных (64 бит):
long: -9223372036854775808 to 9223372036854775807
ulong: 0 to 18446744073709551615
Ответ 2
uint
и ulong
- это неподписанные версии int
и long
. Это означает, что они не могут быть отрицательными. Вместо этого они имеют большее максимальное значение.
Type Min Max CLS-compliant int -2,147,483,648 2,147,483,647 Yes uint 0 4,294,967,295 No long –9,223,372,036,854,775,808 9,223,372,036,854,775,807 Yes ulong 0 18,446,744,073,709,551,615 No
Чтобы написать литерал без знака int в исходном коде, вы можете использовать суффикс u
или u
, например 123U
.
Вы не должны использовать uint и ulong в своем общедоступном интерфейсе, если хотите CLS-совместимый.
Прочтите документацию для получения дополнительной информации:
Ответ 3
u
означает unsigned
, поэтому ulong
- большое число без знака. Вы можете сохранить большее значение в ulong
, чем long
, но отрицательных чисел не разрешено.
Значение A long
хранится в 64-битной форме, с его первой цифрой, чтобы показать, является ли это положительным/отрицательным числом. в то время как ulong
также является 64-битным, а все 64 бит - для хранения номера. поэтому максимум ulong равен 2 (64) -1, а long равен 2 (63) -1.
Ответ 4
Отличие состоит в том, что uint
и ulong
являются неподписанными типами данных, то есть диапазон отличается: они не принимают отрицательные значения:
int range: -2,147,483,648 to 2,147,483,647
uint range: 0 to 4,294,967,295
long range: –9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
ulong range: 0 to 18,446,744,073,709,551,615