|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
16.02.2011, 00:32 | #1 |
Регистрация: 15.02.2011
Сообщений: 6
|
Дано масив из 6 байт. Посчитать число 2х единиц, что расположены между нулями.
Ребят, помогите пожалуйста! не получается...
Дано массив из 6 байт. Рассматривая его, как массив с 48 бит, посчитать число 2х единиц, что расположены между нулями. |
16.02.2011, 01:29 | #2 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
хм.. ну вот массив из 48 бит:
PHP код:
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
16.02.2011, 05:30 | #3 |
Участник клуба
Регистрация: 11.01.2010
Сообщений: 1,139
|
veniside наверное требуется найти две единицы идущие подряд окруженные нулями, в твоем случае это только две пары 9 и 10 разряды и 22 и 23 разряды считая слева от 0 разряда
|
16.02.2011, 10:43 | #4 | |
Регистрация: 15.02.2011
Сообщений: 6
|
Цитата:
|
|
16.02.2011, 12:12 | #5 |
Форумчанин
Регистрация: 23.04.2009
Сообщений: 346
|
Или быть может под '2х' понимается число двоичных единиц, а не сдвоенных?
Нет, ну правда..
|
16.02.2011, 12:16 | #6 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
> да, именно так.
Тогда вот пример на басме. Просто крутим весь наш массив вправо и смотрим, а нет ли 6 (= 0110) в младших битах. На выходе edx будет содержать "число 2х единиц, что расположены между нулями". Код:
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
16.02.2011, 15:08 | #7 |
Регистрация: 15.02.2011
Сообщений: 6
|
спасибо большое... буду разбираться...
|
16.02.2011, 15:34 | #8 |
Регистрация: 15.02.2011
Сообщений: 6
|
А если использывать команды сканирования бит bsf или bsr, если находим единичный бит смотрим, что за ним (с помощью команду test или логические сдвиги shr/shl), если единица и следом за ней ноль -- увеличиваем счетчик, иначе двигаем к следующей единице????
|
16.02.2011, 16:17 | #9 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
Да, можно и так, конечно. Там только неудобно будет работать с битами на границах байт (слов), когда цепочка 0110 начинается в одном байте, а заканчивается в другом.
Есть ещё команда bt, если пересчитывать индекс бита в смещение, можно на её основе всё проверить. Особенно в 64-битном режиме, где все ваши 48 бит влезут в одну команду проверки.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
16.02.2011, 19:08 | #10 |
Регистрация: 15.02.2011
Сообщений: 6
|
Код:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Найти байт максимальным количестов единиц и байт с максмальным количеством нулей и разность (ассемблер) | Beren42 | Помощь студентам | 0 | 15.12.2010 20:32 |
Найти байтс наибольшим числом единиц и найти байт с наибольшим чилом нулей. Найти разность число единиц м | Beren42 | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 0 | 14.12.2010 17:44 |
Assembler (массив, разм-ю 9 байт, проверка наличия 3х единиц в коде эл-та) | Exelence | Помощь студентам | 1 | 05.12.2010 20:05 |
Дано натуральное число. Верно ли, что в этом числе нет цифры А. А задается с клавиатуры. | Женечка92 | Помощь студентам | 9 | 03.04.2010 16:06 |
Не считает сумму между нулями | nark25 | Общие вопросы C/C++ | 6 | 19.04.2009 19:02 |