![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 11.11.2011
Сообщений: 45
|
![]() Код:
Вот небольшая программа. Она должна находить в числе последовательность бит '000' и заменять на '0110'. подскажите в чем ошибка?
Крепкая стена строится из маленьких кирпичей.
Но если положил первый кирпич криво, как ни старайся, стена кривой будет. |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 11.07.2010
Сообщений: 914
|
![]()
Наверное, стоит получше сформулировать условие. А то можно подумать, что при наличии 32 бит в числе хотите получить 33?
![]() И если подобная вставка (замена) сама сформирует новую последовательность из трех нулевых битов, то каковы условия обработки этой ситуации? А сейчас вообще вижу даже не компилируемую программу из-за пропущенной открывающей скобки, и нет инициализации переменной b (че она ваще делает)? И не понятно условие выполнения цикла. PS. может, чтоб не путаться, разбить число на триады бит, и оперировать ими: Код:
Последний раз редактировалось EUGY; 07.05.2012 в 16:03. |
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 11.11.2011
Сообщений: 45
|
![]()
оу шит)
действительно пропустил скобку. ![]() Нет разбивать на триады не проще. Суть в том, что программа должна заменять последовательность '000' до тех пор, пока это последовательность есть в числе. (у меня именно это не получается) вот рабочий код. Код:
Крепкая стена строится из маленьких кирпичей.
Но если положил первый кирпич криво, как ни старайся, стена кривой будет. Последний раз редактировалось Вечный_студент; 07.05.2012 в 18:12. |
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 11.07.2010
Сообщений: 914
|
![]()
Ребус вообщем не плохой
![]() Решал в лоб, поэтому может не оптимально и мог какие-то нюансы упустить: Код:
|
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 11.11.2011
Сообщений: 45
|
![]()
на удивление работает
![]() Поэтому, я всё же больше склоняюсь к своему коду. Он и проще и оптимальнее. Не подскажете, как мне его преобразовать, чтобы программа после себя не оставляла последовательности 000? на примере числа 2147483616 двоичная форма числа: 11111111111111111111111111100000 в ответ программа выдает: 11111111111111111111111111000110
Крепкая стена строится из маленьких кирпичей.
Но если положил первый кирпич криво, как ни старайся, стена кривой будет. |
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 11.07.2010
Сообщений: 914
|
![]()
Вот первая оптимизация моего способа:
Код:
PS. может стоит обратиться в ветку ассемблера? Последний раз редактировалось EUGY; 08.05.2012 в 15:36. |
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 11.11.2011
Сообщений: 45
|
![]() Код:
![]() полностью правильно работающий код ![]()
Крепкая стена строится из маленьких кирпичей.
Но если положил первый кирпич криво, как ни старайся, стена кривой будет. |
![]() |
![]() |
![]() |
#8 |
Пользователь
Регистрация: 11.11.2011
Сообщений: 45
|
![]() Код:
объясните только вот эту строчку. плохо понимаю что и при каких условиях здесь происходит. на выходе получается либо 1 либо 0 и, в зависимости от этого, выполняется if?
Крепкая стена строится из маленьких кирпичей.
Но если положил первый кирпич криво, как ни старайся, стена кривой будет. |
![]() |
![]() |
![]() |
#9 | ||
Форумчанин
Регистрация: 11.07.2010
Сообщений: 914
|
![]() Цитата:
Код:
Цитата:
Если у него эти биты не установлены, выполняется условие if |
||
![]() |
![]() |
![]() |
#10 |
Пользователь
Регистрация: 11.11.2011
Сообщений: 45
|
![]()
а можно расписать подробно, как путем этих не хитрых операций получается число 111 (7)?
Крепкая стена строится из маленьких кирпичей.
Но если положил первый кирпич криво, как ни старайся, стена кривой будет. Последний раз редактировалось Вечный_студент; 09.05.2012 в 17:07. |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
замена битов в числе | Вечный_студент | Помощь студентам | 11 | 08.05.2012 00:21 |
Сдвиг битов | XOKS | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 5 | 08.11.2010 18:11 |
Перемешивание позиций битов в числе | explored | Общие вопросы C/C++ | 6 | 27.10.2010 23:14 |
Замена второго бита в числе | SZR | Помощь студентам | 4 | 25.01.2008 20:16 |
Перестановка битов. | RegentM | Общие вопросы Delphi | 3 | 05.11.2007 17:23 |