Re: Bit count
От | Kenneth Marshall |
---|---|
Тема | Re: Bit count |
Дата | |
Msg-id | 20091124182302.GF3237@it.is.rice.edu обсуждение исходный текст |
Ответ на | Re: Bit count (Rikard Bosnjakovic <rikard.bosnjakovic@gmail.com>) |
Список | pgsql-novice |
On Tue, Nov 24, 2009 at 07:18:00PM +0100, Rikard Bosnjakovic wrote: > On Tue, Nov 24, 2009 at 16:47, Nathaniel Trellice <naptrel@yahoo.co.uk> wrote: > > [...] > > If not, can anyone recommend the most efficient way within postgres to implement the kind of bit-counting tricks foundat: > > Perhaps something like this: > > CREATE OR REPLACE FUNCTION bitcount(i integer) RETURNS integer AS $$ > DECLARE n integer; > DECLARE amount integer; > BEGIN > amount := 0; > FOR n IN 1..16 LOOP > amount := amount + ((i >> (n-1)) & 1); > END LOOP; > RETURN amount; > END > $$ LANGUAGE plpgsql; > > > bos=# select bitcount(6); > bitcount > ---------- > 2 > (1 row) > > bos=# select bitcount(7); > bitcount > ---------- > 3 > > bos=# select bitcount(4711); > bitcount > ---------- > 7 > (1 row) > > bos=# select bitcount(1024); > bitcount > ---------- > 1 > (1 row) > > > -- > - Rikard > You could also setup a lookup table and just select the bit count from the table. There was also a thread on how to efficiently count the set bits that concluded with the posting of a C function that could be used. It all depends on your need for speed. Regards, Ken
В списке pgsql-novice по дате отправления: