Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.03.27;
Скачать: CL | DM;

Вниз

Количество четных бит?   Найти похожие ветки 

 
100a   (2005-03-10 21:28) [0]

Есть-ли стандартные функции по подсчету
нуливых бит в масиве или переменной??


 
Anton_K ©   (2005-03-10 21:31) [1]

А компонент тебе не надо?


 
Defunct ©   (2005-03-10 21:37) [2]

function ZCount( Value : Cardinal ):integer;
var
  i : integer;
begin
  Result := 32;
  for i := 0 to 31 do
  begin
     Result := Result - (Value and 1);
     Value := Value shr 1
  end
end;


 
TechnoDreamer ©   (2005-03-10 22:01) [3]

/Anton_K ©   (10.03.05 21:31) [1]
А компонент тебе не надо?/

Вот блин, молоко еще на губах не обсохло, а туда же, не можешь/не  хочешь помочь, чё лезешь? Форум засоряешь, нечего сказать, так хоть что-то вякну.


 
Zeqfreed ©   (2005-03-10 22:13) [4]

TechnoDreamer ©   (10.03.05 22:01) [3]
<личная переписка>
Иногда лучше жевать. Позвольте спросить, оскорбление и отголоски дискриминации - это признаки обсохшего молока?
</личная переписка>


 
ламер_ ©   (2005-03-10 22:18) [5]

Возраст не является показателем мастерства (а равно и обратное).

> нечего сказать, так хоть что-то вякну.

Мне кажется, что именно это вы и сделали.

Тех, кто презирает программистов, программисты презирают сильнее, чем те, кто презирает программистов, презирающих программистов, которые презирают тех, кто их презирает.


 
GuAV ©   (2005-03-10 22:21) [6]


>   for i := 0 to 31 do

while Value <> 0 do :p


 
Poirot ©   (2005-03-10 23:29) [7]

Для решения подобного класса задач мб посмотреть коекакую литру:)Например очень, по моему мнению, интересная книжка "Алгоритмические трюки для программистов" Генри Уоррен
Например там Defunct ©   (10.03.05 21:37) [2] есть и кое что доля массивов тоже найдёте:)
а вообще классная книжка:) Маст хэв:)))


 
Anatoly Podgoretsky ©   (2005-03-11 00:35) [8]

Defunct ©   (10.03.05 21:37) [2]
  Value := Value shr 2
биты то четные


 
Defunct ©   (2005-03-11 01:16) [9]

GuAV ©   (10.03.05 22:21) [6]

неа, она ж нули считает ;>


 
Defunct ©   (2005-03-11 01:17) [10]

Anatoly Podgoretsky ©   (11.03.05 00:35) [8]

эх?


 
Gero ©   (2005-03-11 01:24) [11]

Ого, да тут серьезные чуваки, пойду-ка я отсюда.


 
GuAV ©   (2005-03-11 08:30) [12]

Defunct ©   (11.03.05 1:16) [9]

Она считает c минусом и единицы :)


 
TechnoDreamer ©   (2005-03-11 12:35) [13]

ламер_ ©   (10.03.05 22:18) [5]
Возраст не является показателем мастерства (а равно и обратное).
> нечего сказать, так хоть что-то вякну.
Мне кажется, что именно это вы и сделали.

Да нет, просто запарила привычка людей не отвечать на вопросы, а что нибуть глубокомысленно сказать, типа читай мануал. Пусть у человека был элементарный вопрос, не хочешь отвечать, на него не отвечай, а то ему сразу: а может тебе компонент еще дать. Никого конечно не хотел обидеть, может настроение плохое было, но на этом форуме это стандартное явление, делать такие глкбомысленные ответы.


 
Gero ©   (2005-03-11 13:24) [14]


> TechnoDreamer ©   (11.03.05 12:35)

Ага, твой пост №3 очень глубокомысленный.
И польза автору ветки с него огромная.
Так что, если хочешь что-то изменить — начни с себя.


 
uny ©   (2005-03-11 13:29) [15]

>Так что, если хочешь что-то изменить — начни с себя
если у меня есть ключ от твоего замка - почему он должен подходить к моему
(с)


 
Marser ©   (2005-03-11 13:36) [16]


> 100a   (10.03.05 21:28)  

Что ты вкладывешь в понятие чётного бита? Если нулевой разряд байта равен нулю - байт четный. Всё. Ибо все остальные степени двойки - четные числа.

Если же ты хочешь проверить некий двоичный разряд, тебе поможет булева логика. Допустим
if b and $80>0 then ...
Проверяет, выставлен ли в байте седьмой разряд. ($80 = 128 = 10000000b)
А вообще такие вещи нужно делать с закрытыми глазами.


> TechnoDreamer ©  

Гы. В контексте Анатолия Подгорецкого ты не просто сопляк... Тут не семь, а 31 год разницы. А ты принуждаешь его читать свои грубости. Тем паче, что по сабжу не нашел, что ответить.


 
DiamondShark ©   (2005-03-11 14:16) [17]

Функция считает количество единичных бит:


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;


Как подсчитать количество нулевых бит, а так же в массиве, надеюсь, ума хватит.


 
uny ©   (2005-03-11 14:20) [18]

автор и не думал как ему повезёт)


 
Anatoly Podgoretsky ©   (2005-03-11 14:34) [19]

Правильно надо автора пытать, пока не расскажет по русски, что надо сделать, что такое четные биты. До тех пор, оставим каждому отвечающему самому решать, каким образом это делать.


 
Anton_K ©   (2005-03-11 14:50) [20]


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;


 
Anton_K ©   (2005-03-11 14:54) [21]

Функция считает единичные биты.


 
Defunct ©   (2005-03-11 22:11) [22]

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;


 
Virgo_Style ©   (2005-03-11 23:01) [23]

Нулевые подсчитали, а четные и нулИвые - нет :-(
:-)))


 
Kerk ©   (2005-03-11 23:06) [24]

считает кол-во единиц.

count := 0;
while num > 0 do
begin
 num := (num-1) and num;
 Inc(count);
end;


 
Verg ©   (2005-03-11 23:19) [25]


> Kerk ©   (11.03.05 23:06) [24]


Браво.


 
Sha ©   (2005-03-12 01:25) [26]

> Verg ©   (11.03.05 23:19) [25]
Известный трюк :)



Страницы: 1 вся ветка

Текущий архив: 2005.03.27;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.026 c
14-1109876476
Kolan
2005-03-03 22:01
2005.03.27
Как редактировать свою запись на форуме?


1-1110433767
Alexandr3
2005-03-10 08:49
2005.03.27
AccessViolation непонятно с чего


1-1110788735
Я1
2005-03-14 11:25
2005.03.27
TreeView.Items.Clear - Access violation


14-1110195108
MU
2005-03-07 14:31
2005.03.27
FreeVCS ->JediVCS


3-1109060114
Term
2005-02-22 11:15
2005.03.27
Как открыть OLE документ из BLOB-поля