Dlaczego 0x1p3
jest równa 8.0
? Dlaczego 0x1e3
jest równy 483
, natomiast 0x1e3d
jest równy 7741
? Jest mylące od 1e3d
jest równe 1000.0
.Reprezentacja liczb zmiennoprzecinkowych Java jako liczby szesnastkowe
Odpowiedz
0x1e3
i 0x1e3d
są szesnastkowy całkowitą literały. Zauważ, że e
i d
są cyframi heksadecymalnymi, a nie wskaźnikiem wykładniczym lub wskaźnikiem typu double
w tym przypadku.
1e3d
jest liczbą dziesiętną zmiennoprzecinkowa, literowa,. e
jest wskaźnikiem wykładniczym, d
mówi, że jest to double
, a nie float
.
Zapis 0x1p3
jest sposobem wyrażenia literału zmiennopozycyjnego w systemie szesnastkowym, jak można przeczytać w section 3.10.2 specyfikacji języka Java. Oznacza to 1 razy 2 do potęgi 3; wykładnik jest binarny (czyli 2-do-mocy zamiast 10-to-the-power).
0x1e3 jest hex do 483, jak jest 0x1e3d hex do 7741. e
jest odczytywany jako cyfry hex o wartości 14.
Ah, 0x1e3 to liczba szesnastkowa, więc "e" nie oznacza tu wykładnika. – serious
Ale 0x1p3 nadal nie jest jasne. – serious
@serious, różnica polega na tym, że 0x1e3 jest liczbą całkowitą, a nie zmiennoprzecinkową. "E" w tej liczbie całkowitej jest tylko niefortunnym zbiegiem okoliczności, który wprowadza zamieszanie. 0x1p3 jest liczbą zmiennoprzecinkową. Jest inaczej interpretowane. Interpretacja obejmuje _mantissa_ i _exponent_. Pierwsza z nich to część 1.0 (zanotuj zakładany przecinek dziesiętny). Ta ostatnia to część "p3", która czyta "do trzeciej potęgi". Ponieważ jesteśmy binarni, wzięcie liczby do trzeciej potęgi jest takie samo, jak przesunięcie 3 bitów w lewo, więc 0b1 staje się 0b1000. To 8 w systemie dziesiętnym. –
- 1. Drukuj tablicą całkowitą jako liczby szesnastkowe
- 2. C++ konwersja liczb zmiennoprzecinkowych na liczby całkowite
- 3. Korygowanie liczb zmiennoprzecinkowych
- 4. Jak wyświetlać liczby szesnastkowe w C?
- 5. C: Reprezentacja dużych liczb całkowitych
- 6. Jak wymawiasz duże liczby szesnastkowe?
- 7. wyjściowy strumień liczb zmiennoprzecinkowych precyzyjnie
- 8. Przechowywanie liczb zmiennoprzecinkowych w pliku
- 9. drukowanie bardzo dużych liczb zmiennoprzecinkowych
- 10. Jak drukować liczby szesnastkowe w PHP lub Java
- 11. Ucinanie liczb zmiennoprzecinkowych za pomocą PHP
- 12. Czy liczby szesnastkowe są kiedykolwiek ujemne?
- 13. wyrażenie regularne do wyszukiwania liczb dziesiętnych/liczb zmiennoprzecinkowych?
- 14. Regex do analizowania międzynarodowych liczb zmiennoprzecinkowych
- 15. Blokowanie liczb zmiennoprzecinkowych w języku Python?
- 16. przechowywanie liczb jako varchar
- 17. C# stała binarna reprezentacja
- 18. Czytanie liczb jako ciągi
- 19. Zaokrąglanie liczb zmiennoprzecinkowych po dodaniu (gwardia, lepkie i okrągłe bity)
- 20. Konwersja Java do liczb całkowitych
- 21. Czy GDB może poprawnie korygować szesnastkowe liczby zmiennoprzecinkowe w stylu C?
- 22. Tryb Emacs C - jak podświetlasz składnię podając liczby szesnastkowe?
- 23. Jak porównać liczby szesnastkowe z liczbami szesnastkowymi w powłoce?
- 24. Gson. Wyodrębnij liczby całkowite jako liczby całkowite, a nie jako liczby podwójne
- 25. Wymuszanie wykonywania obliczeń zmiennoprzecinkowych
- 26. Czy mnożenie liczb zmiennoprzecinkowych przez zero daje zero?
- 27. trasa Kolba dając 404 z liczb zmiennoprzecinkowych w adresie URL
- 28. podwójna konwersja do liczby całkowitej w java
- 29. Java Lambda do konwersji komparatora - reprezentacja pośrednia
- 30. Jak uzyskać największe liczby z dużej liczby liczb?
Dlaczego 'p' w' 0x1p3'? – marcog
@marcog jest to część sposobu wyrażania liczb zmiennoprzecinkowych, zobacz stronę JLS: http://java.sun.com/docs/books/jls/third_edition/html/lexical.html#3.10.2 – Jesper
@marcog: jest to znacznik wykładnika dla literału szesnastkowego, zmiennoprzecinkowego, zgodnie z definicją w standardach Java i C99. –