В чем разница между Int32 и UInt32?
В чем разница между Int32
а также UInt32
?
Если они совпадают с возможностями диапазона мощностей, вопрос в том, по какой причине UInt32
был создан? Когда я должен использовать UInt32
вместо Int32
?
6 ответов
UInt32 не допускает отрицательных чисел. Из MSDN:
Тип значения UInt32 представляет целые числа без знака со значениями в диапазоне от 0 до 4 294 967 295.
Целое число от -2147483648 до 2147483647, а целое число без знака равно от 0 до 4294967295.
Эта статья может помочь вам:
http://www.csharp-station.com/Tutorials/Lesson02.aspx
uint32 - это целое число без знака с 32-разрядным значением, которое означает, что вы можете представить 2^32 числа (0-4294967295).
однако для представления отрицательных чисел один бит из 32 бит зарезервирован для указания положительного или отрицательного числа. это оставляет вам 2^31 возможных чисел в отрицательном, а также в положительном. результирующий диапазон составляет от -2147483648 до 2147483647 (положительный диапазон включает значение 0, следовательно, только 2147483647). это представление называется int32.
Вы должны выбрать unsigned для чисел, которые не могут быть отрицательными по определению, поскольку он предлагает вам более широкий диапазон, но вы должны иметь в виду, что преобразование из и в int32 невозможно, поскольку int32 не может содержать диапазон uint32 и наоборот.,
UInt32 не подписан. Он не может использоваться для представления отрицательных чисел, но может содержать большие положительные числа.
Int32 обозначает целое число со знаком, а UInt32 обозначает целое число без знака. В то время как Int32 может хранить отрицательные и положительные целые числа, UInt32 может хранить только положительные целые числа. Диапазон Int32 - от -2147483648 до +2147483647, а UInt32 - от 0 до 4294967295. Следовательно, цель создания UInt32 - хранить неотрицательные данные, такие как идентификатор последовательности, физические величины, такие как масса и т. Д.
Между ними нет никакой разницы.
Разница в том, как это представлено, например, при печати на терминал.
Например, и придерживаясь 8-битных значений для простоты:
- 255 это
0xff
, и -1 также0xff
. - Интерпретируйте -1 как "Один слева от нуля", а +1 - как "Один справа от нуля".
- -1 + -1 = -2, что означает "два слева от нуля", что также является
0xfe
. Что ж, если мы преобразуем это в беззнаковую математику, тогда оно станет 0xff + 0xff = 0xfe.
Итак, вы видите, что нет разницы между подписанным и неподписанным, разница только в том, как мы представляем их в конце, и в этом случае тип указывает, как он представлен.
Подписание становится важным, когда компилятор должен выполнить преобразование от меньшего размера к большему через расширение знака. Поэтому в этом случае важно указать тип, чтобы компилятор мог поступать правильно.