Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.03.27;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.039 c
1-1110970095
СержК
2005-03-16 13:48
2005.03.27
Как отобразить на форме рисунок


3-1109801748
RaS
2005-03-03 01:15
2005.03.27
Как это сделать?


8-1102340271
WOWer
2004-12-06 16:37
2005.03.27
Дифракция


14-1109916406
Skier
2005-03-04 09:06
2005.03.27
Знатокам Visual C++ ...


1-1110529251
Georji
2005-03-11 11:20
2005.03.27
Состояние файла





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский