Главная страница


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Yuriy Kaminskiy                      2:5020/517.21  23 Feb 2001  11:55:27
 To : Alexander Babanov
 Subject : Re: Задачка ;)
 -------------------------------------------------------------------------------- 
 
 
 >>>>> On 21:52 21/2/2001, Alexander Babanov <2:5020/5609.69> writes:
  AB> Тут жену как-то спросили как на сях посчитать число еденичек в бинарном
  AB> представлении числа. Hу, на сях писать было в ломы, я решил попробовать
  AB> на эхотаге. Вот более-менее отличающиеся друг от друга варианты:
 
 use integer;
 sub hweight($)
 {
  my($x)=@_;
  my $res=0;
 # hint: operation $x &= ($x-1) drops least sign. bit in $x
  $res++, $x &= $x-1 while($x);
  return $res;
 }
 sub hweight32($)
 {
  my($w)=@_;
 # на C этот вариант будет быстрее [нет условных переходов!]; на perl - х.з.
  my $res = ($w   & 0x55555555) + (($w   >>  1) & 0x55555555);
  $res    = ($res & 0x33333333) + (($res >>  2) & 0x33333333);
  $res    = ($res & 0x0F0F0F0F) + (($res >>  4) & 0x0F0F0F0F);
  $res    = ($res & 0x00FF00FF) + (($res >>  8) & 0x00FF00FF);
  return    ($res & 0x0000FFFF) + (($res >> 16) & 0x0000FFFF);
 }
 # аналогично определяются hweight16 и hweight8;
 # см. /usr/include/linux/bitops.h
 -- 
 Yuriy Kaminskiy.
 --- Gnus v5.2.25/XEmacs 19.14
  * Origin: Kyle Katan's station (2:5020/517.21@fidonet)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Задачка ;)   Alexander Babanov   21 Feb 2001 22:52:37 
 Задачка ;)   Ivan Frolcov   22 Feb 2001 12:11:07 
 Re: Задачка ;)   HB   22 Feb 2001 18:08:48 
 Re: Задачка ;)   Yuriy Kaminskiy   23 Feb 2001 11:55:27 
Архивное /ru.perl/17427fba5731e.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional