все понятно, только код, который раньше работал не работает... :( будем править...
On Jan 6, 10:35 pm, Dmitry Yemanov <[email protected]> wrote: > Andrei wrote: > > в integer 32 бита? > > Так точно, включая знак. > > > тогда, почему единица сдвинутая на 31 влево не валидный integer? > > Еще раз повторю - результатом сдвига является 64-битное знаковое число. > Единица, сдвинутая на 31 разряд влево, в 64-битном представлении равна > +2147483648. Это значение бинарно влазит в integer, но при проверке в > 64-битной арифметике оказывается за пределами допустимого диапазона (от > -2147483648 до +2147483647). Ибо сервер допустимый диапазон проверяет > арифметически, в рамках исходного типа данных, а не битовой маской, в > рамках типа данных результата. > > -- > Дмитрий Еманов

