Go Back   CodingForums.com > :: Client side development > JavaScript programming

Before you post, read our: Rules & Posting Guidelines

Reply
 
Thread Tools Rate Thread
Enjoy an ad free experience by logging in. Not a member yet? Register.
Old 10-13-2012, 02:18 AM   PM User | #1
gabsillis
New Coder

 
Join Date: Sep 2012
Posts: 15
Thanks: 4
Thanked 0 Times in 0 Posts
gabsillis is an unknown quantity at this point
Binary to Decimal conversion

Hello all,
I'm making a script that converts a binary input into a decimal number.
I always get a 0 as answer for some reason.
Code:
var countMult = 1;
var binary = prompt("enter a binary number");
var len = binary.length;
var dec = 0;
var convert = function(){
    for (i=0;i<len;i++){
        if (binary.charAt(i) === 1){
//this part seems to be a problem
            dec+=countMult;
        }
        countMult = countMult*2;
        console.log(dec);
    }
};
convert();
gabsillis is offline   Reply With Quote
Old 10-13-2012, 03:29 AM   PM User | #2
Logic Ali
Regular Coder

 
Logic Ali's Avatar
 
Join Date: Sep 2010
Location: London
Posts: 961
Thanks: 0
Thanked 198 Times in 193 Posts
Logic Ali will become famous soon enoughLogic Ali will become famous soon enough
You are trying to perform the calculation from left to right, but it should be right to left, in other words, start at the end of the string.

Quote:
Code:
if (binary.charAt(i) === 1)
=== is the wrong operator because you are comparing an integerr to a character.

Try again.
Logic Ali is offline   Reply With Quote
Old 10-13-2012, 03:46 AM   PM User | #3
Old Pedant
Supreme Master coder!

 
Old Pedant's Avatar
 
Join Date: Feb 2009
Posts: 23,237
Thanks: 59
Thanked 3,998 Times in 3,967 Posts
Old Pedant is a name known to allOld Pedant is a name known to allOld Pedant is a name known to allOld Pedant is a name known to allOld Pedant is a name known to allOld Pedant is a name known to all
Is there any point in noting that JavaScript will do this for you?
Code:
<script type="text/javascript">
var binary = "110010111011000011101";
var number =  parseInt( binary, 2 );
alert( number );
</script>
The second argument to parseInt -- the 2 -- tells JS to convert the string in radix=2. That is, in binary.

And of course you can go back the other way:
Code:
var number = 7181711;
var binary = number.toString(2);
__________________
An optimist sees the glass as half full.
A pessimist sees the glass as half empty.
A realist drinks it no matter how much there is.
Old Pedant is offline   Reply With Quote
Old 10-13-2012, 04:25 AM   PM User | #4
Logic Ali
Regular Coder

 
Logic Ali's Avatar
 
Join Date: Sep 2010
Location: London
Posts: 961
Thanks: 0
Thanked 198 Times in 193 Posts
Logic Ali will become famous soon enoughLogic Ali will become famous soon enough
Quote:
Originally Posted by Old Pedant View Post
Is there any point in noting that JavaScript will do this for you?
I think the point was to replicate the algorithm used by parseInt.
Logic Ali is offline   Reply With Quote
Old 10-13-2012, 10:23 PM   PM User | #5
Old Pedant
Supreme Master coder!

 
Old Pedant's Avatar
 
Join Date: Feb 2009
Posts: 23,237
Thanks: 59
Thanked 3,998 Times in 3,967 Posts
Old Pedant is a name known to allOld Pedant is a name known to allOld Pedant is a name known to allOld Pedant is a name known to allOld Pedant is a name known to allOld Pedant is a name known to all
Yeah, you are probably right. But in that case the code should be checking for and rejecting any characters other than "1" and "0".
__________________
An optimist sees the glass as half full.
A pessimist sees the glass as half empty.
A realist drinks it no matter how much there is.
Old Pedant is offline   Reply With Quote
Old 10-15-2012, 01:32 PM   PM User | #6
gabsillis
New Coder

 
Join Date: Sep 2012
Posts: 15
Thanks: 4
Thanked 0 Times in 0 Posts
gabsillis is an unknown quantity at this point
Thumbs up fixed

Code:
var countMult = 1;
var binary = prompt("enter a binary number");
var len = binary.length;
var dec = 0;
var convert = function(){
    for (i=0;i<len;i++){
        if (binary.charAt(i) == 1){
            dec+=countMult;
        }
        countMult = countMult*2;
        console.log(dec);
    }
};
convert();
it works now
but I still need to reverse the order
Code:
var countMult = 1;
var binary = prompt("enter a binary number");
var len = binary.length;
var dec = 0;
var convert = function(){
    for (i=0;i<len;i++){
        if (binary.charAt(len-i) == 1){
            dec+=countMult;
        }
        countMult = countMult*2;
        console.log(dec);
    }
};
convert();
It should go in reverse order now but it fails to calculate it correctly...
still working with it

Last edited by gabsillis; 10-15-2012 at 01:52 PM..
gabsillis is offline   Reply With Quote
Old 10-15-2012, 02:03 PM   PM User | #7
gabsillis
New Coder

 
Join Date: Sep 2012
Posts: 15
Thanks: 4
Thanked 0 Times in 0 Posts
gabsillis is an unknown quantity at this point
Code:
var countMult = 1;
var binary = prompt("enter a binary number");
var len = binary.length;
var dec = 0;
var convert = function(){
    for (i=0;i<len;i++){
        if (binary.charAt(len-(i+1)) == 1){
            dec+=countMult;
        }
        countMult = countMult*2;
        console.log(dec);
    }
};
convert();
fixed! it works completely!
gabsillis is offline   Reply With Quote
Old 10-15-2012, 02:14 PM   PM User | #8
Logic Ali
Regular Coder

 
Logic Ali's Avatar
 
Join Date: Sep 2010
Location: London
Posts: 961
Thanks: 0
Thanked 198 Times in 193 Posts
Logic Ali will become famous soon enoughLogic Ali will become famous soon enough
Quote:
Originally Posted by gabsillis View Post
fixed! it works completely!
OK, now validate the input.
Logic Ali is offline   Reply With Quote
Old 10-17-2012, 08:31 PM   PM User | #9
gabsillis
New Coder

 
Join Date: Sep 2012
Posts: 15
Thanks: 4
Thanked 0 Times in 0 Posts
gabsillis is an unknown quantity at this point
I incorporated the binary script into a list of calculator functions to be called upon with buttons in html. The only problem with it is that something I am using is not compatible with Internet-explorer.
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script>
var add = function(){
    var one = prompt("enter first number");
    one = parseInt(one,10);
    var two = prompt("enter second number");
    two = parseInt(two,10);
    alert(one+two);
    return one+two;
};
var subtract = function(){
    var one = prompt("enter first number");
    one = parseInt(one,10);
	var two = prompt("enter second number");
    alert(one-two);
	return one-two;
};
var multipltwo = function(){
	var one = prompt("enter first number");
    one = parseInt(one,10);
	var two = prompt("enter second number");
    two = parseInt(two,10);
    alert(one*two);
	return one*two;
};
var divide = function(){
	var one = prompt("enter first number");
    one = parseInt(one,10);
	var two = prompt("enter second number");
    two = parseInt(two,10);
    alert(one/two);
    return one/two;
};
var power = function(){
	var one = prompt("enter base number");
    one = parseInt(one,10);
	var two = prompt("enter exponent number");
    two = parseInt(two,10);
    if(two===0){
        alert(1);
        return 1;
    }
    else{
        alert(one*two(one,two-1));
        return one*two(one,two-1);
    }
};
//different part of calculator
var countMult = 1;
var dec = 0;
var convert = function(){
    var binartwo = prompt("enter a binartwo number *note antwo number greater than 1 will be seen as a 0*");
    var len = binartwo.length;
    for (i=0;i<len;i++){
        if (binartwo.charAt(len-(i+1)) == 1){
            dec+=countMult;
        }
        countMult = countMult*2;
        console.log(dec);
    }
    alert(dec);
};




</script>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<input type="button" onClick="convert()" value="change a binary number to a decimal number">

</body>
</html>
gabsillis is offline   Reply With Quote
Old 10-17-2012, 09:14 PM   PM User | #10
Logic Ali
Regular Coder

 
Logic Ali's Avatar
 
Join Date: Sep 2010
Location: London
Posts: 961
Thanks: 0
Thanked 198 Times in 193 Posts
Logic Ali will become famous soon enoughLogic Ali will become famous soon enough
Click on the yellow triangle and don't disable that dialog, at least not while testing.

Then you'll probably want to use Google.
Logic Ali is offline   Reply With Quote
Users who have thanked Logic Ali for this post:
gabsillis (10-18-2012)
Old 01-21-2013, 05:02 PM   PM User | #11
dexter28
New to the CF scene

 
Join Date: Jan 2013
Posts: 1
Thanks: 0
Thanked 0 Times in 0 Posts
dexter28 is an unknown quantity at this point
Can anyone help me do this please??
I've been stuck on this for a few weeks


The user enters 0010101 and 010100. These should be converted to decimal (21 and 20, respectively). The Finch will speak that: “The two numbers entered are 21 and 20. Their sum is 41 and when multiplied gives 420. Subtracting the two numbers gives 1”.
Please note that the program must *not* use a simple loop which tests for all 127 cases of decimal number in the case of the 7-binary digit number etc. The program must incorporate a proper algorithm for converting the number by parsing (i.e. searching) the string of bits.
The program should be tested with binary numbers input from the keyboard as well as from a file. You may decide how the two binary numbers in the file are formatted, e.g., one after the other or separated with a new line.
dexter28 is offline   Reply With Quote
Old 01-21-2013, 05:42 PM   PM User | #12
Philip M
Supreme Master coder!

 
Philip M's Avatar
 
Join Date: Jun 2002
Location: London, England
Posts: 17,044
Thanks: 197
Thanked 2,412 Times in 2,390 Posts
Philip M has a spectacular aura aboutPhilip M has a spectacular aura aboutPhilip M has a spectacular aura about
Sounds like homework! See forum Rule #1.5.

And please do not hijack someone else's thread. Prefer to start a thread of your own.

Hint - try using the search feature of this forum.

It is your responsibility to die() if necessary….. - PHP Manual
__________________

All the code given in this post has been tested and is intended to address the question asked.
Unless stated otherwise it is not just a demonstration.

Last edited by Philip M; 01-21-2013 at 06:51 PM..
Philip M is offline   Reply With Quote
Old 01-21-2013, 08:49 PM   PM User | #13
felgall
Master Coder

 
felgall's Avatar
 
Join Date: Sep 2005
Location: Sydney, Australia
Posts: 5,465
Thanks: 0
Thanked 499 Times in 491 Posts
felgall is a jewel in the roughfelgall is a jewel in the roughfelgall is a jewel in the rough
Quote:
Originally Posted by Philip M View Post
And please do not hijack someone else's thread. Prefer to start a thread of your own
What's worse - they've hijacked a JavaScript thread to ask a question which is obviously not intended to be JavaScript. We don't even know what language that the person is learning where they were given this homework question. Had they supplied the code they have written so far a moderator would at least have some idea of which forum the question belongs in so as to properly slit it off into its own thread.
__________________
Stephen
Learn Modern JavaScript - http://javascriptexample.net/
Helping others to solve their computer problem at http://www.felgall.com/
felgall is offline   Reply With Quote
Reply

Bookmarks

Jump To Top of Thread


Thread Tools
Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +1. The time now is 04:57 PM.


Advertisement
Log in to turn off these ads.