В чем разница между "int" и "uint" / "long" и "ulong"?

Я знаю о int и long (32-разрядных и 64-разрядных числах), но что такое uint и 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-совместимый.

Прочтите документацию для получения дополнительной информации:

Кстати, есть и short и ushort и и sbyte.

Ответ 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