parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Ответ

Sergey M. 05.02.2006 15:05 / 05.02.2006 15:09

В документации сказано, что 0хABCDEF -- это форма шестнадцатиричной записи целого числа (а целое число имеет свой диапазон)
В обычном понимании, множество целых чисел - это линейно упорядоченное множество без верхней и нижней границ. Другими словами, "диапазон" у этого множества примерно от минус бесконечности до плюс бесконечности (если не ошибаюсь, ибо с математикой у меня в школе было не очень).

Если имелось в виду тип целое цисло (Integer) - почему не учитывается часть диапазона с отрицательными значениями? Почему не обрезается по диапазону unsigned int (без учета знака)?
единица будет!
0110 0110 1001 1111 0000 0000 0000 0000 0000 0000
----------^
ну можно вообще этот байт выкинуть, написать $a(0x6600000000), и Парсер все равно его обрежет.
...больше maxint. Поэтому парсер обрезает его. (Думаю, что не Парсер, а процессор, потому что физически нельзя положить 40 разрядов на 32-разрядную шину)
ну в итоге Парсер кладет все это дело в double, есть подозрение что там разрядов поболее будет.
^if(0x9F000000 is double){sure, it is}
допускаю возможность что все это является результатом некой "оптимизации", и "фича" оставлена с надеждой на то что никто об нее не споткнется. Вобщем, мое дело предупредить товарищей по несчастью - "осторожно, тут ступенька!" :)
А причина происходящего мне интересна только "постольку поскольку", скорее как небольшая компенсация за время, потраченное на определение источника проблемы...