The Math Forum

Ask Dr. Math - Questions and Answers from our Archives
Associated Topics || Dr. Math Home || Search Dr. Math

Predicting Number of Decimal Digits in a Binary Number

Date: 03/10/2004 at 11:52:00
From: R.B.
Subject: Number of decimal digits from binary number

I am trying to write a function that will return the number of decimal 
digits from a binary number without actually converting from binary to 
decimal.  Here is what I have so far:

let d = number of digits
d = floor of [(bits - 1)*log2] + 1

However, if (bits - 1)mod 10 = 3,6,or 9 then the number of digits 
could be:

 [(bits - 1)*log2] + 1  OR  [(bits - 1)*log2] + 2

Say, for instance, the binary number has 4 bits.  In decimal that 
number ranges from 8-15...1 or 2 digits.  Is there a way to determine 
which length is correct without going through a complete conversion? 

Date: 03/10/2004 at 12:53:15
From: Doctor Douglas
Subject: Re: Number of decimal digits from binary number

Hi R.B.

Thanks for writing to the Math Forum.  I don't think that there
is a way to do this with a single formula.  For example, consider
the two numbers

  1111100111 binary  =   999 decimal
  1111101000 binary  =  1000 decimal

If you are going to distinguish the fact that one of these numbers
gives rise to 3 decimal digits and the other gives rise to 4 decimal
digits, you will need to get into the last four digits in the binary
expansion--you will need to parse at least the first seven digits
of the binary input.

To be efficient, as you've realized, you need to implement the direct 
conversion only when there is a danger of crossing from k decimal 
digits to k + 1 decimal digits (e.g. 999 to 1000).  This is almost, 
but not quite, identical to your rule using the mod function.  I think 
the smallest number of binary digits for which this differs is 102 

  2^103 = 1.01412E+31 has 32 decimal digits
Thus a 102 bit number could have either 31 or 32 decimal digits.

- Doctor Douglas, The Math Forum 
Associated Topics:
College Number Theory

Search the Dr. Math Library:

Find items containing (put spaces between keywords):
Click only once for faster results:

[ Choose "whole words" when searching for a word like age.]

all keywords, in any order at least one, that exact phrase
parts of words whole words

Submit your own question to Dr. Math

[Privacy Policy] [Terms of Use]

Math Forum Home || Math Library || Quick Reference || Math Forum Search

Ask Dr. MathTM
© 1994- The Math Forum at NCTM. All rights reserved.