Beefy Boxes and Bandwidth Generously Provided by pair Networks
XP is just a number

Re^2: bit array comparison

by Amendil (Novice)
on Oct 22, 2019 at 14:28 UTC ( #11107853=note: print w/replies, xml ) Need Help??

in reply to Re: bit array comparison
in thread bit array comparison

Ok. unpack expects a string, but from other example I thought it would work.

My ref were: and

I will bench the perf of the following.

use common::sense; my $a = 0; my $b = 0; $a += 1 << 0; $a += 1 << 1; $b += 1 << 1; $b += 1 << 2; my $i = $a & $b; my $u = $a | $b; my $i_cnt = () = sprintf("%b", $i) =~ /1/g; my $u_cnt = () = sprintf("%b", $u) =~ /1/g; printf "a is %b %d\n", $a, $a; printf "b is %b %d\n", $b, $b; printf "intersection is %b %d\n", $i, $i; printf "union is %b %d\n", $u, $u; say "set bit count in intersection: $i_cnt"; say "set bit count in union: $u_cnt";

Replies are listed 'Best First'.
Re^3: bit array comparison
by Athanasius (Archbishop) on Oct 23, 2019 at 03:05 UTC
    my $i_cnt = () = sprintf("%b", $i) =~ /1/g; my $u_cnt = () = sprintf("%b", $u) =~ /1/g;

    Minor point: for simple counting, tr/// (the transliteration operator) is preferred over m//g because it’s more efficient; also, the syntax is cleaner:

    my $i_cnt = sprintf('%b', $i) =~ tr/1//; my $u_cnt = sprintf('%b', $u) =~ tr/1//;

    Hope that’s of interest,

    Athanasius <°(((><contra mundum Iustus alius egestas vitae, eros Piratica,

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://11107853]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others chilling in the Monastery: (2)
As of 2021-04-12 03:12 GMT
Find Nodes?
    Voting Booth?

    No recent polls found