![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Количество четных бит? [D6, WinXP]
100a © (2005-03-10 21:28:00)Есть-ли стандартные функции по подсчету
нуливых бит в масиве или переменной??
Sha (2005-03-12 01:25:00) [1]> Verg © (11.03.05 23:19) [25]
Известный трюк :)
Verg (2005-03-11 23:19:00) [2]
> Kerk © (11.03.05 23:06) [24]
Браво.
Kerk (2005-03-11 23:06:00) [3]считает кол-во единиц.
count := 0;
while num > 0 do
begin
num := (num-1) and num;
Inc(count);
end;
Virgo_Style (2005-03-11 23:01:00) [4]Нулевые подсчитали, а четные и нулИвые - нет :-(
:-)))
Defunct (2005-03-11 22:11:00) [5]DiamondShark © (11.03.05 14:16) [17]
Anton_K © (11.03.05 14:50) [20]
ОО господа принялись за тяжелую артилерию, что ли и мне пять копеек вставить ;>
function NonZeroBitCount(const Value: Cardinal): integer; assembler;
asm
xor ecx, ecx
test eax, eax
xchg ecx, eax
@L1:
jz @Done
shr ecx, 1
jnc @L1
inc eax
jmp @L1
@Done:
end;
function ZeroBitCount(const Value: Cardinal): integer; assembler;
asm
mov ecx, 32
test eax, eax
xchg ecx, eax
@L1:
jz @Done
shr ecx, 1
jnc @L1
dec eax
jmp @L1
@Done:
end;
Anton_K (2005-03-11 14:54:00) [6]Функция считает единичные биты.
Anton_K (2005-03-11 14:50:00) [7]
function BitCount(X: Cardinal): Integer;
asm
push ebx
mov ebx,eax
xor eax,eax
mov ecx,32
@:
mov edx,ebx
and edx,1
jz @@
inc eax
@@:
shr ebx,1
loop @
pop ebx
end;
Anatoly Podgoretsky (2005-03-11 14:34:00) [8]Правильно надо автора пытать, пока не расскажет по русски, что надо сделать, что такое четные биты. До тех пор, оставим каждому отвечающему самому решать, каким образом это делать.
uny (2005-03-11 14:20:00) [9]автор и не думал как ему повезёт)
DiamondShark (2005-03-11 14:16:00) [10]Функция считает количество единичных бит:
function BitCount(X: Cardinal): Integer;
asm
mov EDX, EAX
and EDX, $55555555
shr EAX, 1
and EAX, $55555555
add EAX, EDX
mov EDX, EAX
and EDX, $33333333
shr EAX, 2
and EAX, $33333333
add EAX, EDX
mov EDX, EAX
and EDX, $0F0F0F0F
shr EAX, 4
and EAX, $0F0F0F0F
add EAX, EDX
mov EDX, EAX
and EDX, $00FF00FF
shr EAX, 8
and EAX, $00FF00FF
add EAX, EDX
mov EDX, EAX
and EDX, $0000FFFF
shr EAX, 16
and EAX, $0000FFFF
add EAX, EDX
end;
Как подсчитать количество нулевых бит, а так же в массиве, надеюсь, ума хватит.
Marser (2005-03-11 13:36:00) [11]
> 100a (10.03.05 21:28)
Что ты вкладывешь в понятие чётного бита? Если нулевой разряд байта равен нулю - байт четный. Всё. Ибо все остальные степени двойки - четные числа.
Если же ты хочешь проверить некий двоичный разряд, тебе поможет булева логика. Допустим
if b and $80>0 then ...
Проверяет, выставлен ли в байте седьмой разряд. ($80 = 128 = 10000000b)
А вообще такие вещи нужно делать с закрытыми глазами.
> TechnoDreamer ©
Гы. В контексте Анатолия Подгорецкого ты не просто сопляк... Тут не семь, а 31 год разницы. А ты принуждаешь его читать свои грубости. Тем паче, что по сабжу не нашел, что ответить.
uny (2005-03-11 13:29:00) [12]>Так что, если хочешь что-то изменить — начни с себя
если у меня есть ключ от твоего замка - почему он должен подходить к моему
(с)
Gero (2005-03-11 13:24:00) [13]
> TechnoDreamer © (11.03.05 12:35)
Ага, твой пост №3 очень глубокомысленный.
И польза автору ветки с него огромная.
Так что, если хочешь что-то изменить — начни с себя.
TechnoDreamer (2005-03-11 12:35:00) [14]ламер_ © (10.03.05 22:18) [5]
Возраст не является показателем мастерства (а равно и обратное).
> нечего сказать, так хоть что-то вякну.
Мне кажется, что именно это вы и сделали.
Да нет, просто запарила привычка людей не отвечать на вопросы, а что нибуть глубокомысленно сказать, типа читай мануал. Пусть у человека был элементарный вопрос, не хочешь отвечать, на него не отвечай, а то ему сразу: а может тебе компонент еще дать. Никого конечно не хотел обидеть, может настроение плохое было, но на этом форуме это стандартное явление, делать такие глкбомысленные ответы.
GuAV (2005-03-11 08:30:00) [15]Defunct © (11.03.05 1:16) [9]
Она считает c минусом и единицы :)
Gero (2005-03-11 01:24:00) [16]Ого, да тут серьезные чуваки, пойду-ка я отсюда.
Defunct (2005-03-11 01:17:00) [17]Anatoly Podgoretsky © (11.03.05 00:35) [8]
эх?
Defunct (2005-03-11 01:16:00) [18]GuAV © (10.03.05 22:21) [6]
неа, она ж нули считает ;>
Anatoly Podgoretsky (2005-03-11 00:35:00) [19]Defunct © (10.03.05 21:37) [2]
Value := Value shr 2
биты то четные
Poirot (2005-03-10 23:29:00) [20]Для решения подобного класса задач мб посмотреть коекакую литру:)Например очень, по моему мнению, интересная книжка "Алгоритмические трюки для программистов" Генри Уоррен
Например там Defunct © (10.03.05 21:37) [2] есть и кое что доля массивов тоже найдёте:)
а вообще классная книжка:) Маст хэв:)))