Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Количество четных бит? [D6, WinXP]


Страницы:   1 2

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] есть и кое что доля массивов тоже найдёте:)
а вообще классная книжка:) Маст хэв:)))


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо