Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Binary to Decimal Conversion - Formula?

Tags:

c#

decimal

binary

I've been searching a while and haven't gotten anything too useful yet, I'm working on a subnet calculator, and well I have used the decimal to binary which I found here, though, I haven't found a good way to convert binary to decimal.

Note: Remember its FROM binary TO decimal, anyways, im in need of the formula or something like that (meaning calculating it, not the automated one).

What I've understood by reading some other posts that you can somehow get the result by dividing by 10, but I didn't really understand it, so if anyone could point me in the right direction, I'd be glad.

Any and all help is very much appreciated guys! :)

like image 323
Nicholas Avatar asked Nov 28 '22 01:11

Nicholas


2 Answers

Doing it without LINQ:

var s = "101011";    // my binary "number" as a string
var dec = 0;
for( int i=0; i<s.Length; i++ ) {
  // we start with the least significant digit, and work our way to the left
  if( s[s.Length-i-1] == '0' ) continue;
  dec += (int)Math.Pow( 2, i );
}

A number in any base can be thought of as the sum of its digits multiplied by their place value. For example, the decimal number 3906 can be written as:

3*1000 + 9*100 + 0*10 + 6*1

The place values are simply powers of ten:

3*10^3 + 9*10^2 + 0*10^1 + 6*10^0

(Remember that any number taken to the power of zero is 1.)

Binary works exactly the same way, except the base is 2, not 10. For example, the binary number 101011 can be written as:

1*2^5 + 0*2^4 + 1*2^3 + 0*2^2 + 1*2^1 + 1*2^0

I hope that gives you a better understanding of binary numbers and how to convert them.

On a practical note, the best solution is Matt Grande's; it's always preferable to use a library method instead of rolling your own (unless you have a very good reason to do so).

like image 57
Ethan Brown Avatar answered Dec 05 '22 01:12

Ethan Brown


You can do it like this:

string bin = "10010101010101";
long l = Convert.ToInt64(bin,2);
like image 20
Matt Grande Avatar answered Dec 05 '22 03:12

Matt Grande