Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

Re: Binary Math?

by athomason (Curate)
on Sep 30, 2003 at 22:01 UTC ( [id://295459] : note . print w/replies, xml ) Need Help??


in reply to Binary Math?

Use oct to go from bitstrings to numbers and sprintf to go from a number to a bitstring. As for the math, the usual operators work once you've done the conversion.
#!/usr/bin/perl use strict; use warnings; my $bitstring1 = shift @ARGV || '10010010111'; my $bitstring2 = shift @ARGV || '01101011010'; my $number1 = oct "0b$bitstring1"; my $number2 = oct "0b$bitstring2"; printf "%s + %s = %b\n", $bitstring1, $bitstring2, $number1 + $number2 +;

Update

As BrowserUK mentioned, this will only get you as far as your platform's integer types allow. Fortunately, Math::BigInt also accepts the '0b' prefix for input and has the as_bin method for output, and has replacements for oodles of math operations.