Forth
http://fforum.winglion.ru/

ограничения операции ABS (и NEGATE)
http://fforum.winglion.ru/viewtopic.php?f=9&t=2027
Страница 1 из 1

Автор:  mOleg [ Вс мар 29, 2009 23:24 ]
Заголовок сообщения:  ограничения операции ABS (и NEGATE)

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

Автор:  WingLion [ Пн мар 30, 2009 01:48 ]
Заголовок сообщения: 

Ситуация неисправима.

Есть 2<sup>32</sup> чисел, кодируемых 32-битным значением.
Из них 1 - ноль, 2<sup>31</sup> положительных и отрицательных взаимно "обратных" по операции NEGATE пар, и оставшееся одно число, не имеющее такой пары... в принципе...

Так что, сей факт надо просто знать и понимать, когда в программе следует опасаться его проявления в виде глюка. Так же, как опасаться глюков от переполнения при сложении/вычитании/умножении/делении и т.д. и т.п.

Автор:  mOleg [ Пн мар 30, 2009 01:53 ]
Заголовок сообщения: 

ну, что ж,
сама проблема лежит в том, что после операции в краевом случае значение не помещается в разрядную сетку, а значит, это либо фича, либо баг в зависимости от идеалогии языка, потому что один ЯП может автоматом повысить разрядность числа, а другой проигнорировать сей факт.
Посему пока для того, чтобы пользователи сей факт могли почерпнуть из документации, она (дока) дополнена.
С другой стороны рука тянется написать 0x7FFFFFFF AND (то есть получить переполнение разрядной сетки), но это тоже будет фича.

Автор:  Lethargeek [ Пн июн 22, 2009 05:11 ]
Заголовок сообщения: 

Просто считайте результат беззнаковым числом ;)

Автор:  mOleg [ Пн июн 22, 2009 12:31 ]
Заголовок сообщения: 

Lethargeek писал(а):
Просто считайте результат беззнаковым числом

это в общем логично, но так не делают ни в Сях, ни в Форте обычно 8( собственно поэтому вопрос и возник.

Автор:  Hishnik [ Пн июн 22, 2009 12:40 ]
Заголовок сообщения: 

Проблема лежит глубже языков программирования. Это вопросы представления чисел, они решаются сначала на "понятийном" уровне. Как решим трактовать 0x80000000, так и будет. А реализации языка останется это решение претворить в жизнь.

Автор:  Mihail [ Вт июн 23, 2009 00:16 ]
Заголовок сообщения: 

mOleg писал(а):
ама проблема лежит в том, что после операции в краевом случае значение не помещается в разрядную сетку, а значит, это либо фича, либо баг в зависимости от идеалогии языка


В документации обычно отмечен диапазон знаковых чисел от -2147483648 до 2147483647.
Т.е. за изменения знака -2147483648 разработчики ответственности не несут.

Автор:  simne [ Вт июн 23, 2009 01:47 ]
Заголовок сообщения: 

Mihail писал(а):
В документации обычно отмечен диапазон знаковых чисел от -2147483648 до 2147483647.

Кстати не такая уж большая цифра..
Была на эту тему хохма, что мол 64 бита на персоналках решили ввести когда стало невозможно 32 битами представить капитал БГ с достаточной точностью :D
Блин, где российские 64-битовые процессоры? :))

Автор:  Wlad [ Вт июн 23, 2009 11:18 ]
Заголовок сообщения: 

В Белоруссии спросите... :)

Автор:  Alexander [ Ср июн 24, 2009 23:45 ]
Заголовок сообщения: 

Блин, Люди, а DNEGATE КТО-НИТЬ ВСПОМНИЛ?
просто вот он и должен переносить в старшую часть единицу, а так она должна остаться в флаге переноса и кто помнит?

Автор:  mOleg [ Чт июн 25, 2009 17:16 ]
Заголовок сообщения: 

Alexander писал(а):
Блин, Люди, а DNEGATE КТО-НИТЬ ВСПОМНИЛ?
просто вот он и должен переносить в старшую часть единицу, а так она должна остаться в флаге переноса и кто помнит?

8) вопрос-то в другом
вы же не станете автоматически увеличивать разрядную сетку :) (по крайней мере в форте)

Автор:  WingLion [ Чт июн 25, 2009 21:32 ]
Заголовок сообщения: 

Tема про 64-битные процессоры oтделена сюда: http://fforum.winglion.ru/viewtopic.php?t=2158

Страница 1 из 1 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/