|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
17.02.2011, 03:34 | #11 | ||
Участник клуба
Регистрация: 11.01.2010
Сообщений: 1,139
|
Цитата:
А почему цитата не полностью? Цитата:
|
||
17.02.2011, 03:44 | #12 | |
Участник клуба
Регистрация: 11.01.2010
Сообщений: 1,139
|
Цитата:
Отличное решение! Только в случае неудачи нужно сдвигать на один разряд, а если 0110 нашли -- сдвинуть сразу на три разряда Есть еще одно решение - для выделения крайнего справа единичного бита (01011000-->0001000) Y=X AND(-X) TEST (2*Y),X проверяем нет ли слева единички и, если есть, TEST(4*Y),X проверяем нет ли за единицей нуля, а дальше для обнуления крайнего справа единичного бита (01011000-->01010000) используется формула X = X AND(X - 1) и ищем следующий крайний справа единичный бит... Последний раз редактировалось Mikl___; 17.02.2011 в 04:47. |
|
17.02.2011, 10:01 | #13 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
> сдвинуть сразу на три разряда
согласен, оптимизацию я оставил для автора топика ) > Есть еще одно решение Интересно. Фактически, это эмуляция работы bsf/bsr ) Неудобно только то, что все эти проверки слева/справа могут пересекать границы байт/слов, и красивого решения, кроме написания универсальной функции bittest(int bitindex), где bitindex может быть любое число (в том числе и больше 32/64), я не вижу.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
17.02.2011, 10:31 | #14 |
Участник клуба
Регистрация: 11.01.2010
Сообщений: 1,139
|
veniside
почему неудобно? При выделении единичного бита смотришь значение, например для байта меньше ли 64 ? -- если осталось менее двух битов, происходит сдвиг вправо с выдвижением из предыдущего байта шести или семи битов (зависит от значения) Только вот незадача, вместо нормального программирования на ассемблере преподаватель dino-4udo заставляет заниматься онанизмом в debug.exe Последний раз редактировалось Mikl___; 17.02.2011 в 10:48. |
17.02.2011, 10:50 | #15 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
ну вот поэтому и неудобно ) не знаю, все эти проверки, сдвиги..
Вот, кстати, простая функция для проверки любого бита (индекс которого задан в ecx) в массиве байт с базой в esi: Код:
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
17.02.2011, 13:31 | #16 |
Форумчанин
Регистрация: 23.04.2009
Сообщений: 346
|
Тоже была вчера бредовая идея с инструкцией bt, индексом и рассматриванием байтов по 2 'с нахлестом', тобишь грузим а ах содержимое источника, декриментим источник, с помощью индекса проходим по всем битам одного байта, ежели в конце видим что возникает нужная ситуация перейти к следующему байту-переходим в следующий, после рассмотрения одного байта вновь грузим слово из источника и так loop'аем sizeof mаssiv-1 количество раз. столкнулся с довольно веселым рядом проблем (вплоть до необходимости переворота битов в байте и геморрным расчетом того какой же это всеже вообще по счету бит, а также количеством счетчиков превосходящим количество регистров у армов) и заснул над реализацией. Проснувшись, осознал, что я индус
Нет, ну правда..
|
17.02.2011, 13:37 | #17 |
Участник клуба
Регистрация: 11.01.2010
Сообщений: 1,139
|
Удалено пользователем Mikl___
Последний раз редактировалось Mikl___; 17.02.2011 в 13:49. |
17.02.2011, 13:47 | #18 |
Форумчанин
Регистрация: 23.04.2009
Сообщений: 346
|
Даже и не знаю что вам ответить, так как совсем не понял вопроса, но насчет ***, могу сказать, что с такими не знаком. Вкратце обо мне: я действительно PinHead, у меня в голове гвозди и если вдруг вы откроете шкатулку-они (а следовательно и я) придут и заберут!
Нет, ну правда..
Последний раз редактировалось yuran666666; 17.02.2011 в 14:01. |
17.02.2011, 13:51 | #19 |
Участник клуба
Регистрация: 11.01.2010
Сообщений: 1,139
|
yuran666666
Я удалил сообщение от греха, просто думал есть еще точки соприкосновения помимо этого сайта, если обидел, извините... |
17.02.2011, 13:58 | #20 |
Форумчанин
Регистрация: 23.04.2009
Сообщений: 346
|
Что вовсе даже есть не беда не узрел абсолютно никаких попираний в отношении моих чести и достоинства. К тому же любые возможные имена бога наглые каббалисты сколько уже лет брутфорсят, а он их и наказал то всего один раз и то Мадонной. Поэтому возучимся пониманию у Главного.
PS: несмотря ни на что, шкатулку Ламоршана открывать все же не рекомендую
Нет, ну правда..
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Найти байт максимальным количестов единиц и байт с максмальным количеством нулей и разность (ассемблер) | 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 |