http://www.perlmonks.org?node_id=1012834


in reply to built in function for binary division

ghosh123:
In addition the the reply of Kenosis, note also the integer pragma. Perl represents numbers internally as doubles. Although the fractional portion of a number is ignored when printed as binary, it still exists and can produce perhaps puzzling results in subsequent calculations.  use integer; causes the fractional portion to be majick'd away (don't ask me for details on this). This may produce results in your 'integer' operations that are more consistent with what you expect. (Note in the examples below, the divisor/multiplier is 0b1110 (14), not 0b1111.)

>perl -wMstrict -le "my $quo = 0b10010110 / 0b1110; my $n = $quo * 0b1110; printf qq{%f %b; %f %b \n}, $quo, $quo, $n, $n; ;; use integer; $quo = 0b10010110 / 0b1110; $n = $quo * 0b1110; printf qq{%f %b; %f %b \n}, $quo, $quo, $n, $n; " 10.714286 1010; 150.000000 10010110 10.000000 1010; 140.000000 10001100