15.0F в Java 0x4170 в Smali?

Пытаюсь отредактировать smali файл в самом smali. Однако у меня есть соответствующий файл java.

сравнение кода

Я пытаюсь понять, почему 15.0F в java 0x4170 в smali? Разве 0x4170 в десятичной системе счисления не равно 16752?

Код: java, smali


person laggingreflex    schedule 06.10.2013    source источник
comment
Примечание: он устанавливает старшие 16 бит, поэтому на самом деле это 0x41700000   -  person Peter Lawrey    schedule 06.10.2013
comment
Дубликат stackoverflow.com/questions/4353580/android-smali-question :)   -  person JesusFreke    schedule 06.10.2013


Ответы (1)


да. См. http://babbage.cs.qc.cuny.edu/IEEE-754.old/Decimal.html

15.0f = 0x41700000 как 32-битное число с плавающей запятой IEEE-754. Значение 0x4170, казалось бы, подразумевает 16-битные числа с плавающей запятой, у которых недостаточно точности, чтобы быть полезными.

Для полноты 15.0d (64-битное число с плавающей запятой) равно 0x402E000000000000.

person Jim Garrison    schedule 06.10.2013
comment
+1, а старшие 16 бит - 0x4170. Установка верхних 16 битов на 4170 может означать, что младшие 16 битов равны 0000 и, следовательно, более компактная форма. Представьте, что 64-битное значение может быть установлено с помощью старших 16 бит 402E, оно будет намного меньше. - person Peter Lawrey; 06.10.2013