Re: Bit count - Mailing list pgsql-novice

From Rikard Bosnjakovic
Subject Re: Bit count
Date
Msg-id d9e88eaf0911241018p7b95bdaaqc65717bb6b663a60@mail.gmail.com
Whole thread Raw
In response to Bit count  (Nathaniel Trellice <naptrel@yahoo.co.uk>)
Responses Re: Bit count  (Kenneth Marshall <ktm@rice.edu>)
Re: Bit count  (Josh Kupershmidt <schmiddy@gmail.com>)
Re: Bit count  (Nathaniel Trellice <naptrel@yahoo.co.uk>)
List pgsql-novice
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

pgsql-novice by date:

Previous
From: Richard Broersma
Date:
Subject: Re: PostgreSQL 8.4.1 and pljava
Next
From: Kenneth Marshall
Date:
Subject: Re: Bit count