![]() |
|
|
![]()
|
|
| Сый |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 131 Регистрация: 23.1.2006 Репутация: 2 Всего: 3 |
Вот, кстати, алгоритмы сдвигов (shl и shr):
Это сообщение отредактировал(а) Сый - 21.5.2006, 15:00 --------------------
Язык программирования, родственный языкам Паскаль и Оберон, использующий русские служебные слова - Глагол: http://glagol.nad.ru |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 1 Всего: 146 |
просто проверяй старший знак если 1 отрицанельно и выводить -(МАХ-число) Добавлено @ 12:34 Сый, че эт за язык такой.... -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| SoWa |
|
|||
![]() Харекришна ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2422 Регистрация: 18.10.2004 Репутация: 6 Всего: 74 |
Это глагол!!!
Сый, я тебя вообще не понимаю! Задача- алгоритм. Кодs? приведенные выше- и есть алгоритмы. -------------------- Всем добра |
|||
|
||||
| Сый |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 131 Регистрация: 23.1.2006 Репутация: 2 Всего: 3 |
> Сый, че эт за язык такой....
http://glagol.nad.ru > Сый, я тебя вообще не понимаю! Задача- алгоритм. Кодs? Задача в Глаголе - это, по-вашему, function. --------------------
Язык программирования, родственный языкам Паскаль и Оберон, использующий русские служебные слова - Глагол: http://glagol.nad.ru |
|||
|
||||
| Dian |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 86 Регистрация: 2.1.2006 Репутация: нет Всего: 1 |
||||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 1 Всего: 146 |
Сый, так это твой язык?
Да и тогда надо ввести понятие знаковое целое или беззнаковое целое -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| Сый |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 131 Регистрация: 23.1.2006 Репутация: 2 Всего: 3 |
Dian, а чем тебя Глагол не устраивает?
Romikgy, нет, это не мой язык, хотя у меня есть форум, посвящённый в том числе и этому языку. > Да и тогда надо ввести понятие знаковое целое или беззнаковое целое Не понял, причём тут знаки (то выражение я для примера привёл, если ты на него смотришь, так что какой бы знак ни был бы у результата, он всё-равно будет неправильным (для НЕ, И-НЕ и ИЛИ-НЕ)). Добавлено @ 15:13 А почему - смотри моё сообщение (23.2.2006, 22:51). --------------------
Язык программирования, родственный языкам Паскаль и Оберон, использующий русские служебные слова - Глагол: http://glagol.nad.ru |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 1 Всего: 146 |
притом что число 3 в двоичной системе это 11, а -4 как ты хошь представляется 100 , если всего 3 разряда или как 11...1100, разрядов в 4 байта в хексе FFFFFFFC , егоже можно представить как 4 294 967 292, т.е. вариант со знаковыми числами выдает -4 , с безнаковыки 4 294 967 292, но это тоже -4, В твоем же варианте , не обрабатывается старший разряд вообще (в смысле 4 байтов) вот и получается 2147483644 Смотрю
И ? У тя он реализован. -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| Dian |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 86 Регистрация: 2.1.2006 Репутация: нет Всего: 1 |
||||
|
||||
| Сый |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 131 Регистрация: 23.1.2006 Репутация: 2 Всего: 3 |
Путём издевательства над калькулятором нашём алгоритм для вычисления not:
Добавлено @ 18:38 > Неудачный он... Ничем не обоснованное утверждение. --------------------
Язык программирования, родственный языкам Паскаль и Оберон, использующий русские служебные слова - Глагол: http://glagol.nad.ru |
|||
|
||||
| Сый |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 131 Регистрация: 23.1.2006 Репутация: 2 Всего: 3 |
Теперь, используя имеющиеся данные, могу посчитать и xor:
ВОЗВРАТ Логич(Логич(ч1,Логич(ч2,0,3),1),Логич(Логич(ч1,0,3),ч2,1),2); (* (a And Not b) Or (Not a And b) = a Xor b *) --------------------
Язык программирования, родственный языкам Паскаль и Оберон, использующий русские служебные слова - Глагол: http://glagol.nad.ru |
|||
|
||||
| mes |
|
||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: нет Всего: 250 |
Судя по етим двум высказываниям, тебе нужно совсем не то, что ты спрашиваешь. Начну с первого вопроса. Независимо с какими числами ты делаешь операцию, компьютер делает операции с двойчным представлением этого числа. not (b) изменяет каждый бит числа на противоположный. Пример: not (11001100) = 00110011 a and b оставляет включенными только те биты, которые являются включенными во втором. Остальные сбрасывает. Пример: 11001100 and 00001111 = 00001100 a or b : включает те биты, которые являются включенными во втором. Остальные оставляет без изменения Пример: 11001100 or 00001111 = 11001111 a xor b : включает те биты, которые , имеют противоположное состояние во втором. Остальные сбрасывает. Пример: 11001100 xor 00001111 = 11000011 Почему же not(5)=-6? Такое можно сказать, только в том случае, если оговорить тип переменных участвующих в операции. Если я скажу : 1+1 = 10, то ето будет некорректно, потому что такое только в двоичной системе. А в десятичной 1+1 =2. Поетому для представления иной системы пользуятся обознаьчением. Обычно (ИМХО) 01B для двоичной, 1 или 1D для десятиричной, 01H и $1 для шестнадцатиричной . Поэтому я думаю ты хотел спросить : Какой алгоритм вычесления xor,or,not для десятичных чисел. Алгоритм простой: Провести двоичную операцию (как в примере выше) над двоичным представлением числа. Как же компьютер представляет десятичные числа? Ето зависит от типа переменной. Для примера рассмотрим операцию not для разных типов: Тип boolean (1 разряд ) not (1) = not (01B) = 0; Тип byte (8 разрядов) -бывает только положительным - not(3) = not(0000 0010B) = 1111 1101B = 253 Tип shortint(8 разрядов) -бывает как положительным так отрицательным not(3) = not(0000 0010B) = 1111 1101B = -4 Тип word (16 разрядов) -бывает только положительным - not(3) = not (0000 0000 0000 0010B) = 1111 1111 1111 1101B = 65533 Tип smallint(16 разрядов) -бывает как положительным так отрицательным - not(3) = not (0000 0000 0000 0010B) = 1111 1111 1111 1101B = -4 Заметил для "отрицательных" типов результат не зависит от кол-ва разрядов, это потому что отрицательные числа начинают свой отсчет с конца. Например для 8разрядного типа -1 = 255; -2 = 254; 253 =-3 и т.д. Для чего нужны различные типы при одинаковом кол-ве разрядов? Потому что они отражают разный диапозон чисел: byte от 0 до 255 shortint -128 до 127. (Обратите внимание, что модуль максимального отицательного числа больше, чем максимальное положительное число. Это потому,что ноль - положительное. Какие подводные камни нас подстерегают если мы не будем строго следить за правильным преобразованием типов? Пример: попробуем прибавить к числу с двоичным представлением 0111 1111B единицу. 0111 1111B + 0000 00001B = 1000 0000B Теперь посмотрим если мы захотим получить десятичное представление: для типа byte : 0111 1111B (127) + 0000 00001B (1) = 1000 0000B (128) для типа shortint : 0111 1111B (127) + 0000 00001B (1) = 1000 0000B (-128) (минус 128!) В "отрицательных" типах , включенный первый бит означает, что число отрицательное. Добавлено @ 13:28 Некоректно (лишние действия) . Лучше так:
И в остальных примерах по тому же принципу. Добавлено @ 13:33 Вообшето обоснованное. И годится только для операций над десятичными переменнами "отрицательного" (отрицательно-положительного) типа. |
||||
|
|||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: нет Всего: 250 |
У тебя алгоритм в твоём первом примере абсолютно правильный (за исключением излишних действий)
Тепе нужно ввести понятии "тип" для правильного отражения результатов. |
|||
|
||||
| Сый |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 131 Регистрация: 23.1.2006 Репутация: 2 Всего: 3 |
Интересные рассуждения.
Про Глагол - бред. Прекрасный язык. Ничем необоснованный гон на него (наверное, врождённая ненависть ко всему русскому, в т.ч. и словам/алфавиту/языку, иначе объяснить просто нечем). Ну вобщем, спасибо, нужен мне сейчас был лишь xor, реализовал я его так:
То есть использовал преобразование двух чисел в двоичный вид (в цепочку знаков), дальше собирал на основе каждого знака этой цепочки новую цепь и преобразовывал в целое число. Это сообщение отредактировал(а) Сый - 2.3.2006, 20:14 --------------------
Язык программирования, родственный языкам Паскаль и Оберон, использующий русские служебные слова - Глагол: http://glagol.nad.ru |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
Модератор: ох... хватит вам уже обсуждать язык Глагол в этом форуме, если кому-то не нравится или нравится Глагол, и он стремится поведать об этом всему миру - милости просим в Красную книгу, там, кстати, уже одна тема есть...
а здесь обсуждаются алгоритмы, в данном случае - алгоритм вычисления логических операций я надеюсь, подобное разъяснение будет понятно всем, и не придется пользоваться административными мерами... Это сообщение отредактировал(а) maxim1000 - 2.3.2006, 21:20 -------------------- qqq |
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |