В этом случае использование Math.abs()
было бы неверно!
Рассматриваемое выше объявление, как говорится в объявлении, UInt32
... без знака 32- бит целое число.
Это просто означает, что самый левый бит (самый значимый бит) не , который следует интерпретировать как бит знака. Это, однако, не мешает вам непреднамеренно использовать значение в некотором контексте, который будет предполагать, что MSB=1
означает «отрицательный».
Тем не менее, это будет неправильно для вас использовать abs()
, потому что это преобразует весь битовый шаблон, если он обнаружит, что MSB=1
, в совершенно другой битовый шаблон. Поскольку MSB - это просто «один из 32 битов, составляющих значение», абсолютно неправильно делать с ним все, что предполагает, что это знаковый бит. И вы также хотите позаботиться о том, чтобы оно никогда не отображалось как отрицательное число, потому что это не так. Это количество длиной 32 бита, а не 31 + знак. Убедитесь, что так всегда выглядит.