Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Пн окт 21, 2019 17:14

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 12 ] 
Автор Сообщение
 Заголовок сообщения: ограничения операции ABS (и NEGATE)
СообщениеДобавлено: Вс мар 29, 2009 23:24 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 4997
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 20 раз.
Поблагодарили: 58 раз.
вот, столкнулся с тем, что ABS на значении 0x80000000(максимальное отрицательное число) ничего не делает, а по логике бы должен оказаться 0? В стандарте об этом ничего не сказано, и в Форт-системах тоже. Вот и думаю, описать ли это как фичу, либо исправлять ситуацию. По логике должно получиться число 1.0 (двойной длины) а значит 0 в младшем разряде

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн мар 30, 2009 01:48 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
Ситуация неисправима.

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

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

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн мар 30, 2009 01:53 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 4997
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 20 раз.
Поблагодарили: 58 раз.
ну, что ж,
сама проблема лежит в том, что после операции в краевом случае значение не помещается в разрядную сетку, а значит, это либо фича, либо баг в зависимости от идеалогии языка, потому что один ЯП может автоматом повысить разрядность числа, а другой проигнорировать сей факт.
Посему пока для того, чтобы пользователи сей факт могли почерпнуть из документации, она (дока) дополнена.
С другой стороны рука тянется написать 0x7FFFFFFF AND (то есть получить переполнение разрядной сетки), но это тоже будет фича.

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн июн 22, 2009 05:11 
Не в сети

Зарегистрирован: Сб дек 09, 2006 07:31
Сообщения: 11
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Просто считайте результат беззнаковым числом ;)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн июн 22, 2009 12:31 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 4997
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 20 раз.
Поблагодарили: 58 раз.
Lethargeek писал(а):
Просто считайте результат беззнаковым числом

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

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн июн 22, 2009 12:40 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6808
Благодарил (а): 16 раз.
Поблагодарили: 110 раз.
Проблема лежит глубже языков программирования. Это вопросы представления чисел, они решаются сначала на "понятийном" уровне. Как решим трактовать 0x80000000, так и будет. А реализации языка останется это решение претворить в жизнь.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт июн 23, 2009 00:16 
Не в сети

Зарегистрирован: Ср май 03, 2006 11:27
Сообщения: 1394
Откуда: St.Petersburg
Благодарил (а): 2 раз.
Поблагодарили: 11 раз.
mOleg писал(а):
ама проблема лежит в том, что после операции в краевом случае значение не помещается в разрядную сетку, а значит, это либо фича, либо баг в зависимости от идеалогии языка


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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт июн 23, 2009 01:47 
Не в сети

Зарегистрирован: Вс июн 21, 2009 20:49
Сообщения: 111
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Mihail писал(а):
В документации обычно отмечен диапазон знаковых чисел от -2147483648 до 2147483647.

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт июн 23, 2009 11:18 
Не в сети
Аватара пользователя

Зарегистрирован: Чт апр 26, 2007 21:09
Сообщения: 286
Благодарил (а): 12 раз.
Поблагодарили: 10 раз.
В Белоруссии спросите... :)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср июн 24, 2009 23:45 
Не в сети
Аватара пользователя

Зарегистрирован: Вт ноя 06, 2007 21:23
Сообщения: 227
Откуда: Екатеринбург
Благодарил (а): 4 раз.
Поблагодарили: 7 раз.
Блин, Люди, а DNEGATE КТО-НИТЬ ВСПОМНИЛ?
просто вот он и должен переносить в старшую часть единицу, а так она должна остаться в флаге переноса и кто помнит?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт июн 25, 2009 17:16 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 4997
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 20 раз.
Поблагодарили: 58 раз.
Alexander писал(а):
Блин, Люди, а DNEGATE КТО-НИТЬ ВСПОМНИЛ?
просто вот он и должен переносить в старшую часть единицу, а так она должна остаться в флаге переноса и кто помнит?

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

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт июн 25, 2009 21:32 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
Tема про 64-битные процессоры oтделена сюда: http://fforum.winglion.ru/viewtopic.php?t=2158

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 12 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB