Показать сообщение отдельно
  #42 (permalink)  
Старый 07.01.2011, 21:21
Интересующийся
Отправить личное сообщение для Kepa Посмотреть профиль Найти все сообщения от Kepa
 
Регистрация: 05.12.2010
Сообщений: 27

Сообщение от Kolyaj Посмотреть сообщение
В JS есть.
http://javascript.ru/ecma/part8#a-8.5
Я сейчас бегло просмотрел (сегодня читать уже не буду, спать хочется) и насколько я понял там речь идет об общем 64-х разрядном представлении чисел в котором есть и +0 и -0, а в побитовых операциях числа представляются, насколько я понимаю, в 32-х разрядном знаковом целочисленном формате в котором есть только один ноль, завтра подробно прочитаю статью, может ошибся.

x-yuri,
спасибо за пояснения, завтра буду разбираться дальше, сейчас уже отрубаюсь, позже напишу о результатах

-------
update

Все, теперь разобрался! Вобщем смысл такой - мы представляем отрицательные числа в таком виде, чтобы заменить вычитание сложением, т.е. если первое число больше, то при сложении у нас будет переполнение, а значимые биты как раз дадут разность, а если отрицательное больше, то мы при сложении получим меньшее отрицательное число, т.к. положительного "не хватит" чтобы "переполнить". Ну и чтобы это все работало, отрицательные числа мы представляем в "обратном" порядке, начиная с -1 = 1111 (для 4-х разрядного числа), а т.к. у нас в данном случае (речь о побитовых операциях, а не о представлении типа number) нет отрицательного нуля, то чтобы получить отрицательное число мы применяем побитовое НЕ к такому же положительномц, при этом получаем отрицательное число по модулю на 1 больше начального, т.к. отрицательные числа начинаются с -1 а не с нуля и чтобы компенсировать это мы добавляем единицу.

Последний раз редактировалось Kepa, 09.01.2011 в 11:37.
Ответить с цитированием