Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?
 
PerlMonks  

Re^4: Operate with bits

by AnomalousMonk (Bishop)
on Mar 12, 2020 at 07:24 UTC ( #11114157=note: print w/replies, xml ) Need Help??


in reply to Re^3: Operate with bits
in thread Operate with bits

I don't understand why GrandFather's solution (bitwise-anding) would not give you the same result with a lot less wasted motion.


Give a man a fish:  <%-{-{-{-<

Replies are listed 'Best First'.
Re^5: Operate with bits
by soonix (Canon) on Mar 12, 2020 at 10:08 UTC
    I assume that for most humans it is easier to see the "finding bit X" problem as one of dealing with strings, than as one of calculating (although, of course, the latter is much easier for the computer).

    In other words:

    sprintf '%b' converts to a string of bits, then I can take the 7th char from the right
    is easier to understand (for most humans) than
    If I have it as a number, I simply "AND" it with 26
    Of course, it all depends: if there are millions of lines, the inefficiency will add up and become noticeable.

      But we're not humans, we're programmers!


      Give a man a fish:  <%-{-{-{-<

        Can't disagree, but obviously some programmers are more human than others ;-)
Re^5: Operate with bits
by GrandFather (Sage) on Mar 12, 2020 at 07:29 UTC

    Maybe because syedasadali95 is actually dealing with hex digits (nibbles), not with bits as assumed by my post and stated by every one of syedasadali95's posts up until the reply to soonix.

    Optimising for fewest key strokes only makes sense transmitting to Pluto or beyond

      Even so:

      c:\@Work\Perl\monks>perl -wMstrict -le "LINE: for my $line ( 'tag:0x3bb5044d addr:0x1009db0 qospri:40 len:0x40', 'tag:0x3bb5043d addr:0x1009d40 qospri:30 len:0x30', 'tag:0x3bb5044d addr:0xb0 qospri:40 len:0x40', 'tag:0x3bb5043d addr:0x40 qospri:30 len:0x30', 'tag:0x3bb5044d qospri:40 len:0x40', 'tag:0x3bb5043d qospri:30 len:0x30', ) { my $got_addr = my ($hex_str) = $line =~ m{ addr:0x ([[:xdigit:]]+) }xms; ;; next LINE if not $got_addr; ;; my $bit_6_set = 0x40 & hex $hex_str; ;; printf qq{bit 6 %7s in %9s of '$line' \n}, $bit_6_set ? 'set' : 'not set', qq{'$hex_str'} ; } " bit 6 not set in '1009db0' of 'tag:0x3bb5044d addr:0x1009db0 qospri:40 + len:0x40' bit 6 set in '1009d40' of 'tag:0x3bb5043d addr:0x1009d40 qospri:30 + len:0x30' bit 6 not set in 'b0' of 'tag:0x3bb5044d addr:0xb0 qospri:40 len: +0x40' bit 6 set in '40' of 'tag:0x3bb5043d addr:0x40 qospri:30 len: +0x30'


      Give a man a fish:  <%-{-{-{-<

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (3)
As of 2020-05-25 03:01 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    If programming languages were movie genres, Perl would be:















    Results (143 votes). Check out past polls.

    Notices?