Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister
 
PerlMonks  

Re: binary converter

by Limbic~Region (Chancellor)
on Apr 22, 2013 at 15:30 UTC ( #1029908=note: print w/ replies, xml ) Need Help??


in reply to binary converter

perlnoobz,
I will re-write your code and explain it. I hope it makes sense and isn't more confusing to you.

#!/usr/bin/perl use strict; use warnings; # Obtain a binary string from the user or die trying print "Your binary input please => "; chomp(my $bin = <STDIN>); die "'$bin' is not binary\n" if $bin =~ /[^01]/; # Binary numbers are easier to convert right to left # We will reverse the numbers to do this my @position = reverse split //, $bin; # Now the right most value is in the first slot of the array # And the left most value is in the last slot of the array my $tot = 0; # Normally when we loop over an array, we loop over its values # In this case, looping over its indices allows us to do powers of 2 # $#position is the last index in the array for my $idx (0 .. $#position) { $tot += $position[$idx] * 2 ** $idx; # had a typo here with $digi +t[$idx] } print "\n$tot\n";

Cheers - L~R


Comment on Re: binary converter
Download Code
Re^2: binary converter
by Jenda (Abbot) on Apr 23, 2013 at 12:20 UTC

    The position shoul be digit :-)

    In either case you do not need the index nor the ** operator.

    my @digit = reverse split //, $bin; my $num = 0; for my $bit (@digit) { $num = $num * 2 + $bit; } print "\n$num\n";

    Jenda
    Enoch was right!
    Enjoy the last years of Rome.

      Jenda,
      Or digit should have been position.

      I wouldn't have written the code I did for myself - it was intended to be more instructional since the OP indicated not understanding the for loop. I guess I should have paid closer attention (updated now). Thanks!

      Cheers - L~R

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (3)
As of 2015-07-05 09:29 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (61 votes), past polls