The full exercise states: Write a program that asks for a decimal number less than 256 and converts it to binary. (Hint: You may want to use the bitwise and operator 8 times.)
Since 256 is 2^8, I am assuming using a computation of 2**8 is involved. Ryan On 9/12/11 3:29 PM, "Brandon McCaig" <bamcc...@gmail.com> wrote: >On Mon, Sep 12, 2011 at 2:55 PM, Ryan Munson ><ryan.barrac...@elboardo.com> wrote: >> I am running through a good book on Perl and am having some issues with >>a >> script I am trying to create for one of the practice exercises (I am >> teaching myself Perl for work). Just to let you know the solution does >>not >> involve using an if statement because this is in the next chapter. > >What have you learned so far? This seems a little advanced to do >before you even know how to use an if statement, unless the book has >already explained the solution and just wants for you to type it out. > >> The objective is to "Write a program that asks for a decimal less than >>256 >> and converts it to binary." >*snip* >> chomp(my $dec = <STDIN>); >> $dec = $dec < 256; > >I doubt that this is doing what you intended it to do. The < operator >is a comparison operator (numeric less-than operator) and will return >a boolean result indicating whether or not the left-hand side is >less-than the right-hand side in a numeric context. You're overwriting >your $dec variable with this boolean result, meaning it will either >contain '' (equivalent to zero) or 1 after this statement. You can >confirm this with a simple print statement: > >print STDERR "After the less-than operation \$dec = $dec ... :(\n"; > >> print $dec, "is less than 256! ", "\n"; > >This looks like the kind of print statement that you would have >/inside/ of an if statement i.e., only if some condition is true, such >as the less-than operation seen erroneously on the previous line. >Perhaps the previous line was supposed to be an if statement? That >would seem to contradict you not being taught about if statements yet, >however. > >> $dec = oct($dec); > >There are two problems with this line. Firstly, oct refers to the >octal numbering system, which is not the same as the binary numbering >system. (Reading the perldoc, however, I'm surprised to learn that it >can also handle hexadecimal and binary strings, so perhaps this >inconsistency isn't really a problem at all). Secondly, oct doesn't >convert a number to an octal string; rather it converts an octal >string to a number. :) You can see for yourself with the following >command: perldoc -f oct. > >You can also see with this simple program: > >#!usr/bin/perl > >use strict; >use warnings; > ># Outputs 8 instead of 12 (the octal number for decimal 10) ># or 10 or whatever other number you might otherwise expect. >print oct(10), "\n"; > >__END__ > >Rethink the exercise and what you've learned and let us know if you >still need help. :) > > >-- >Brandon McCaig <http://www.bamccaig.com/> <bamcc...@gmail.com> >V zrna gur orfg jvgu jung V fnl. Vg qbrfa'g nyjnlf fbhaq gung jnl. >Castopulence Software <http://www.castopulence.org/> ><bamcc...@castopulence.org> -- To unsubscribe, e-mail: beginners-unsubscr...@perl.org For additional commands, e-mail: beginners-h...@perl.org http://learn.perl.org/