0x1e3
и 0x1e3d
- шестнадцатеричные целые числа литералы. Обратите внимание, что e
и d
являются шестнадцатеричными цифрами, а не показателем степени или показателем типа double
.
1e3d
- десятичный литерал с плавающей точкой . e
- показатель степени, d
говорит, что это double
, а не float
.
Обозначение 0x1p3
- это способ выражения литерала с плавающей точкой в шестнадцатеричном формате, как вы можете прочитать в разделе 3.10.2 Спецификации языка Java. Это означает 1 раз 2 к степени 3; показатель степени является двоичным (то есть он равен 2-степени, а не 10-степени).