Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change

Re: Binary Coded Decimal

by Marshall (Abbot)
on Sep 18, 2012 at 07:00 UTC ( #994205=note: print w/replies, xml ) Need Help??

in reply to Binary Coded Decimal

BCD, Binary Coded Decimal is a system where each 4 binary bits represent a decimal digit. The hexadecimal digits A-F are not used in this representation.

This format is a bit odd nowadays (more normal would be ASCII decimal which takes 2 8 bit bytes instead of 2 4 bit nibbles, but that extra space is usually not of consequence). Anyway this is how to calculate the "digits". The integer "div" or modulo operation is only one machine instruction and the integer multiply is also only one machine instruction. I don't know how good Perl is at this. See Perl pack() and unpack() for how to cram these into one 8 bit value.

#!usr/bin/perl -w use strict; my @tests = (2,11,23,89,99); foreach my $num (@tests) { my $units = $num % 10; #modulo is the remainder my $tens = ($num - $units)/10; printf "decimal=%02d BCD=%04b %04b\n", $num, $tens, $units; } __END__ decimal=02 BCD=0000 0010 decimal=11 BCD=0001 0001 decimal=23 BCD=0010 0011 decimal=89 BCD=1000 1001 decimal=99 BCD=1001 1001

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://994205]
LanX .♩..♬ ... Another one bites the Sahara dust ...
marto wonders what fresh hell the firefox update has brought, apart from maxing out CPUs
1nickt was looking into Firefox Extended Support releases yesterday. You don't have to go with the updates!
[erix]: wonderfully red sun here
[LanX]: FF has become a source of instability :(
[1nickt]: erix not so wonderful for the lungs :-(
[erix]: the stuff is pretty high up as I understand it; I have not felt any effect on lungs/breathing

How do I use this? | Other CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (8)
As of 2017-10-17 12:32 GMT
Find Nodes?
    Voting Booth?
    My fridge is mostly full of:

    Results (230 votes). Check out past polls.