Intereting Posts
Выравнивание с котлин и маслобойник Как настроить версию кода байта Kotlin в проекте Gradle на Java 8? Элементы меню панели инструментов Android никогда не отображаются, но переходят в переполнение Параллельная загрузка файлов S3 через Kotlin Corouts Kotlin: передать массив методу varargs с оператором распространения Кнопка выбора кнопки Anko Объявление поля POJO, значение init или null Не удалось найти kotlin-reflect.jar (org.jetbrains.kotlin: kotlin-reflection: 1.1.3-2) в android studio 3.0 Как я могу объявить параметр функции, который может быть строкой или функцией в Kotlin? Как установить функцию прослушивания кликов и передать значение поля edittext для просмотра модели с использованием привязки данных Одноразовые события в архитектуре MVI Как я могу получить ценность от наблюдаемых Regex не соответствует в Kotlin Ошибка «не должна быть пустой» в Kotlin Spring Boot ThymeLeaf и Kotlin – значение флажка не передается контроллеру?

напишите шестнадцатеричный целочисленный литерал, равный Int.MIN_VALUE в Котлине

как написать один шестнадцатеричный целочисленный литерал, который равен Int.MIN_VALUE (который равен -2147483648 в десятичной -2147483648 ) в Котлин?

AFAIK, Int – 4 байта … и иногда кажется, что дополнение 2 используется для представления целых чисел … но я не уверен. Я пробовал следующие шестнадцатеричные литералы, чтобы помочь себе понять систему:

  • 0xFFFFFFFF но это Long , а не Int
  • 0xFFFFFFFF.toInt() который равен -1
  • -0xFFFFFFFF.toInt() который равен 1
  • 0x7FFFFFFF который равен 2147483647, который является Int.MAX_VALUE
  • -0x7FFFFFFF который равен -2147483647, который является Int.MIN_VALUE+1
  • 0xFFFFFFF который равен 268435455 в десятичном значении
  • 0x0FFFFFFF который также равен 268435455 в десятичном значении

Но я не могу понять, какой шестнадцатеричный целочисленный литерал можно использовать для представления Int.MIN_VALUE .

Надеюсь, ответ не заставит меня чувствовать себя глупо …

Solutions Collecting From Web of "напишите шестнадцатеричный целочисленный литерал, равный Int.MIN_VALUE в Котлине"

Int представляет собой 32-разрядное целое число со знаком. 32 бита означают 8 шестнадцатеричных цифр:

___7 FFFFFFF

0111 1111 1111 1111 1111 1111 1111 1111

Как вы можете видеть, самый левый бит равен 0, таким образом, это положительный интеграл в 32-битном представлении. В соответствии с определением дополнения 2 и примером минимального 32-битного отрицательного значения будет 1 бит слева, а затем 0 :

1000 0000 0000 0000 0000 0000 0000 0000

___8 0 0 0 0 0 0 0

то есть 0x80000000 .

В Kotlin вам нужно добавить знак - для обозначения отрицательного Int который не является истинным в Java. Рассмотрим следующий пример

 println(0x7FFFFFFF) // -> prints 2147483647 (Integer.MAX_VALUE) println(-0x80000000) // -> prints -2147483648 (Integer.MIN_VALUE) println(0x80000000) // -> prints 2147483648 (does not fit into Int) 

Это не то же самое, что в Java:

 System.out.println(0x7FFFFFFF); // -> prints 2147483647 (Integer.MAX_VALUE) System.out.println(-0x80000000); // -> prints -2147483648 (Integer.MIN_VALUE) System.out.println(0x80000000); // -> prints -2147483648 (Integer.MIN_VALUE) 

Это соответствует спецификации Kotlin, хотя поведение переполнения шестнадцатеричных литералов еще не определено .

Дальнейшее чтение:

  • Почему Java может хранить 0xff000000 как int?