![]() |
|
Модераторы: Poseidon |
![]()
|
|
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 16 Всего: 128 |
Задача следующая.
Реализовать функцию перевода имеющегося числа в двоично-десятичное представление и обратно. Двоично-десятичная система подразумевает, что каждая имеющаяся цифра переводится в свой двоичный код, все коды склеиваются - вот и получается двоично-десятичное число. Наоборот, соответственно, обратная вещь происходит, берутся тетрады и превращаются в соответствующие цифры. Я решил через простой перебор всех имеющихся цифр (в цикле) и превращение их в нужный код просто кучкой if, проверяющих, какой цифре какой код соответствует. Однако, преподше это не понравилось. Она сказала, что тут есть "классное решение, и туда преобразует, и обратно, прям такое классное, без всяких толп if и прочего". Не подскажете такое решение? ЗЫ на всякий случай:
|
|||
|
||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 16 Всего: 128 |
Блин, народ, помогите, завтра сдавать уже! Навряд ли это так сложно, но я не могу придумать ничего, кроме перебора.
|
|||
|
||||
| Hades |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 226 Регистрация: 8.8.2008 Репутация: 4 Всего: 37 |
|
|||
|
||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 16 Всего: 128 |
Hades, а объяснить можете?
Это сообщение отредактировал(а) mr.Anderson - 30.10.2008, 20:45 |
|||
|
||||
| Hades |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 226 Регистрация: 8.8.2008 Репутация: 4 Всего: 37 |
поочерёдно проверяем биты числа.
как работает & думаю не надо обьяснять? val = 7 // 0111 0111&1000(7&8) // 1-й бит, если он в семёрке = 1, то результат будет 8, если он в семёрке = 0, то результат будет 0 0111&0100(7&4) // 2-й бит, если он в семёрке = 1, то результат будет 4, если он в семёрке = 0, то результат будет 0 0111&0010(7&2) // 3-й бит, если он в семёрке = 1, то результат будет 2, если он в семёрке = 0, то результат будет 0 0111&0001(7&1) // 4-й бит, если он в семёрке = 1, то результат будет 1, если он в семёрке = 0, то результат будет 0 |
|||
|
||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 16 Всего: 128 |
Hades, ничего не понял... Поподробней... Пожалуйста.
Это сообщение отредактировал(а) mr.Anderson - 30.10.2008, 21:00 |
|||
|
||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 16 Всего: 128 |
Плюс я ж говорю, решение должно конвертить и туда, и обратно. А ваше только цифру конвертит. Т.е. все равно циклом проходить придется, причем, это перевод только "туда". А обратно как.
|
|||
|
||||
| Hades |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 226 Регистрация: 8.8.2008 Репутация: 4 Всего: 37 |
||||
|
||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 16 Всего: 128 |
Hades, да где бы его взять, этот прототип. Его самому надо придумать.
|
|||
|
||||
| destrd |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 1.10.2008 Репутация: нет Всего: 4 |
из 2->10
а как одной функцией даже не знаю. Делить же надо, при переводе в двоичную. если только if поставить Добавлено через 9 минут и 5 секунд Какую-то неправильную функцию перевода вы хотите --------------------
Some people, when confronted with a problem, think, "I known, I'll use regular expressions." Now they have two problems. -- Jamie Zawinski in comp.lang.emacs |
|||
|
||||
| Hades |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 226 Регистрация: 8.8.2008 Репутация: 4 Всего: 37 |
так, эта функция получает значения только в десятичном формате? после того как вывели число в двоичном формате, надо ещё что-то сделать? Добавлено @ 22:13 destrd, вы не правильно поняли 1 = 0001 5 = 0101 => 15 - 00010101 а не шестнадцатиричное Это сообщение отредактировал(а) Hades - 30.10.2008, 22:16 |
|||
|
||||
| destrd |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 1.10.2008 Репутация: нет Всего: 4 |
--------------------
Some people, when confronted with a problem, think, "I known, I'll use regular expressions." Now they have two problems. -- Jamie Zawinski in comp.lang.emacs |
|||
|
||||
![]()
|
| Правила форума "Центр помощи" | |
|
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Центр помощи | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |