С Новым годом! Форум программистов, компьютерный форум, киберфорум
Алгоритмы
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.89/35: Рейтинг темы: голосов - 35, средняя оценка - 4.89
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2

Необычная система счисления

06.01.2012, 18:06. Показов 7281. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть шестеричная позиционная система счисления с следующими цифрами: { B, A, 0, 1, 2, 3 }, где A = -1, B = -2
Нужно уметь складывать и умножать числа в этой системе счисления и выводить результат в ней же.

Во-первых, непонятно, какое тут основание на самом деле - 6 или 4 ? 4 и 5 ведь нету.
Во-вторых - как именно можно проводить эти операции?
На сколько я понимаю, есть 2 способа:
-переводить из десятичной сс в нужную и обратно
-вычислять столбиком в этой же системе

Оба случая не совсем понятны.
Перевести в десятичную сс не так сложно, а вот назад - проблематично. Если взять за основание 4, то A и B никогда не будут использоваться. И вообще, как я понимаю, существует несколько способов перевести в нее.
Со вторым также затрудняюсь, в основном из-за основания.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.01.2012, 18:06
Ответы с готовыми решениями:

Система счисления
Помогите плиз! Надо число 0,23 (в 10-иричной с/с) перевести в 8-иричную с/с (получить 3 знака после запятой) Надо выполнить...

Двоичная система счисления
Всем привет. Так вот вопрос. чтобы перевести число 139 из десятичной в двоичную,мы делим на два и т.д. у нас выходит 10001011 в двоичной....

Система счисления (Сложение чисел)
Поясните а точнее распишите как складывать числа в восьмеричной системе счисления и в двоичной... 1.В восьмеричной системе счисления...

22
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
06.01.2012, 20:16
Если это шестеричная система, то цифры 4 и 5 в ней выглядят как двузначные числа 1B и 1A соответственно.
Тогда можно применить такой алгоритм. Если числа заданы в десятичной системе, то переводим их в шестеричную, а затем заменям цифры 4 и 5 вышеуказанными числами.


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Для сложения чисел в заданной системе применяем таблицу сложения:
    B   A   0   1   2   3
    --------------------------
B  |A2  A3  B   A   0   1
A  |    B   A   0   1   2
0  |        0   1   2   3
1  |            2   3   1B
2  |                1B  1A
3  |                    10
 
 
Для умножения чисел в заданной системе применяем таблицу умножения:
    B   A   0   1   2   3
    --------------------------
B  |1B  2   0   B   A2  A0
A  |    1   0   A   B   A3
0  |        0   0   0   0
1  |            1   2   3
2  |                1B  10
3  |                    13
1
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
06.01.2012, 20:40  [ТС]
Цитата Сообщение от Mr.X Посмотреть сообщение
Тогда можно применить такой алгоритм. Если числа заданы в десятичной системе, то переводим их в шестеричную, а затем заменям цифры 4 и 5 вышеуказанными числами.
Нет, числа заданы в шестеричной системе, причем именно числа а не цифры.
Например, может быть такой вариант:
123 * AB0

Но за счет этого
Если это шестеричная система, то цифры 4 и 5 в ней выглядят как двузначные числа 1B и 1A соответственно.
вроде можно перевести число из десятичной в шестеричную.
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
06.01.2012, 21:30
Цитата Сообщение от diagon Посмотреть сообщение
Нет, числа заданы в шестеричной системе, причем именно числа а не цифры.
Например, может быть такой вариант:
123 * AB0
Ну тогда просто применять вышеприведенные таблицы сложения и умножения:

C++
1
2
3
4
5
6
7
8
9
10
11
    1   2   3
*       A   B   0
    =============
        A   0
    A   2
    B
    -------------
    A   3
A   B
=================
B   1   B   0   0
0
 Аватар для kazak
3601 / 2742 / 355
Регистрация: 11.03.2009
Сообщений: 6,300
06.01.2012, 22:30
Цитата Сообщение от diagon Посмотреть сообщение
с следующими цифрами: { B, A, 0, 1, 2, 3 }, где A = -1, B = -2
Если честно, никогда не видел, чтобы к понятию "цифра" применялось понятие "знак".
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
07.01.2012, 06:58
Цитата Сообщение от diagon Посмотреть сообщение
причем именно числа а не цифры.
Алгоритм умножения в столбик и состоит в сведении умножения чисел к умножению и сложению цифр.

Добавлено через 2 минуты
Цитата Сообщение от kazak Посмотреть сообщение
Если честно, никогда не видел, чтобы к понятию "цифра" применялось понятие "знак".
Согласно Википедии, ци́фры — это («буквы») для записи чисел («слов»). Так что никто нам не запрещает обозначить "буквами" отрицательные числа.
0
 Аватар для kazak
3601 / 2742 / 355
Регистрация: 11.03.2009
Сообщений: 6,300
07.01.2012, 10:25
Цитата Сообщение от Mr.X Посмотреть сообщение
Так что никто нам не запрещает обозначить "буквами" отрицательные числа.
Но если верить тойже Википедии позиционным системам счисления это не свойственно.
http://ru.wikipedia.org/wiki/П... 0.B8.D0.B5
0
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
07.01.2012, 10:35  [ТС]
Цитата Сообщение от Mr.X Посмотреть сообщение
Алгоритм умножения в столбик и состоит в сведении умножения чисел к умножению и сложению цифр.
Думаю, что все же проще просто перегнать в десятичную сс и обратно. При этом работать как с нормальной шестеричной сс, а если попадутся 4 и 5, то их нужно переводить как A и B соответственно и увеличивать следующий разряд.
0
 Аватар для kazak
3601 / 2742 / 355
Регистрация: 11.03.2009
Сообщений: 6,300
07.01.2012, 11:04
Цитата Сообщение от diagon Посмотреть сообщение
что все же проще просто перегнать в десятичную сс и обратно
Адекватный алгоритм есть?
0
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
07.01.2012, 11:09  [ТС]
Цитата Сообщение от kazak Посмотреть сообщение
Адекватный алгоритм есть?
Это самое простое. Просто разложить по школьной формуле. Например 1A2 должно разложится как
https://www.cyberforum.ru/cgi-bin/latex.cgi?1 * {6}^{2} + (-1) * {6}^{1} + 2 * {6}^{0}
Не совсем в этом уверен, но вроде так.
0
 Аватар для kazak
3601 / 2742 / 355
Регистрация: 11.03.2009
Сообщений: 6,300
07.01.2012, 11:20
В десятичную понятно. С десятичной в шестиричную?
0
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
07.01.2012, 11:25  [ТС]
Цитата Сообщение от kazak Посмотреть сообщение
В десятичную понятно. С десятичной в шестиричную?
Опять же по школьному алгоритму.
Делить число на 6 и запоминать остатки. Потом собрать остатки с конца. Затем пробежаться по результату с конца, если получилось 4 или 5, то поставить A или B соответственно и увеличить следующий по старшинству разряд.
В правильности не уверен.
1
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
07.01.2012, 11:41
Цитата Сообщение от kazak Посмотреть сообщение
Цитата Сообщение от diagon Посмотреть сообщение
что все же проще просто перегнать в десятичную сс и обратно
Адекватный алгоритм есть?
Алгоритм перевода из шестеричной в необычную следующий:
1) Если число отрицательное, то заменяем цифры так:
1 -> A
2 -> B
3 -> A3
4 -> A2
5 -> A1

2) Если положительное, то так:
4 -> 1B
5 -> 1A.

Затем складываем, но здесь все равно без таблицы сложения не обойтись.
1
 Аватар для kazak
3601 / 2742 / 355
Регистрация: 11.03.2009
Сообщений: 6,300
07.01.2012, 11:43
Хм... вроде работает, для 1000 получил 1АВАВ.
0
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
07.01.2012, 11:44  [ТС]
Цитата Сообщение от Mr.X Посмотреть сообщение
Если число отрицательное
Только положительное

Цитата Сообщение от Mr.X Посмотреть сообщение
2) Если положительное, то так:
4 -> 1B
5 -> 1A.
Но если заменить одну цифру на две, то разряды сместятся, и число увеличится на степень шестерки.
Поэтому, как я понял, нужно заменять на A или B и увеличивать более старший разряд.
Но уверенности в этом нету.
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
07.01.2012, 11:57
Цитата Сообщение от diagon Посмотреть сообщение
Только положительное
Минуточку!
Если так умножать в примере, который вы привели, то получим:
123 * AB0 = -2445(10) = -15200(6)
Заменяя в полученном отрицательном шестеричном числе цифры по вышеприведенному мной алгоритму, получим:
A
A2B00
--------
B1B00

Добавлено через 1 минуту
Цитата Сообщение от diagon Посмотреть сообщение
Поэтому, как я понял, нужно заменять на A или B и увеличивать более старший разряд.
Это и имеется в виду.
0
 Аватар для kazak
3601 / 2742 / 355
Регистрация: 11.03.2009
Сообщений: 6,300
07.01.2012, 11:59
В принципе наличие отрицательных цифр исключает необходимость использования отдельного знака отрицания.
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
07.01.2012, 12:06
Напиши числа от -3 до -1000 без использования унарного минуса.
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
07.01.2012, 12:12
Цитата Сообщение от taras atavin Посмотреть сообщение
Напиши числа от -3 до -1000 без использования унарного минуса.
Ну, что это возможно, доказывается элементарно.
Число -3 в необычной системе записывается как A3.
Затем последовательно прибавляем к этому числу число A по вышеприведенной мной таблице сложения. Так как там все цифры без минуса, то в процессе сложения он у нас и не появится.
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
07.01.2012, 12:49
Цитата Сообщение от Mr.X Посмотреть сообщение
Ну, что это возможно, доказывается элементарно.
Число -3 в необычной системе записывается как A3.
Затем последовательно прибавляем к этому числу число A по вышеприведенной мной таблице сложения. Так как там все цифры без минуса, то в процессе сложения он у нас и не появится.
Запиши.

Добавлено через 11 минут
Цитата Сообщение от Mr.X Посмотреть сообщение
Ну, что это возможно, доказывается элементарно.
Число -3 в необычной системе записывается как A3.
Затем последовательно прибавляем к этому числу число A по вышеприведенной мной таблице сложения. Так как там все цифры без минуса, то в процессе сложения он у нас и не появится.
Вот так и знал, что сам не знаешь. AA3 не равно -4.
-3A3
-4A2
-5A1
-6A0
-9B3
-10B2
-11B1
-12B0
-15A33
-16A32
-17A31
-18A30
-21A23
-22A22
-23A21
-24A20
-27A13
-28A12
-29A11
-30A10
-33A03
-34A02
-35A01
-36A00

Добавлено через 46 секунд
Кто упоротый?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.01.2012, 12:49
Помогаю со студенческими работами здесь

Бинарная система счисления - деление
Добрый вечер! Запутался с делением в столбик. надо разделить 1101 1111 на 1111 пишу так: 1101 1111 | 1111 ...

двоичная система счисления
я некоторые вещи не понял... например есть A=50 B=40 Надо А и В преобразовать в 2сс потом делать следующее А-В А+В -А-В В-А

Необычная ситуация. Не работает система с включенными драйверами!
Тут вот такое дело... у меня винда 7...на днях решил поиграть в старую добрую КС...Запускаю, и тут, как будто помехи на экране ( на 1...

Система счисления (из 2-ой в 8-ю систему счисления)
Система счисления (из 2-ой в 10-ю,из 10-ю в 8-ю систему счисления)

Система счисления
Доброго времени суток! Помогите плз как переделать эту программку которая переводит целое число из системы счисления с основанием 2,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru