+ 1
Can anyone help me with a program that converts decimal number into binary number?
17 Réponses
+ 3
consider the following :
#include <iostream>
#include <bitset>
int main()
{
int myDecimalNumber;
std::cin >> myDecimalNumber;
std::string binary = std::bitset<8>(myDecimalNumber).to_string(); //to binary
std::cout<<binary<<"\n";
unsigned long decimal = std::bitset<8>(binary).to_ulong();
std::cout<<decimal<<"\n";
return 0;
}
this will take any decimal value and convert it to binary. but take caution here, since we set the bitset to contain 8 bits, that means the largest number we can use is 255 (2^8 - 1). once I figure out an appropriate way to place the correct number of bits I'll update. but nonetheless this should be a good starting place for you.
enjoy, happy coding!
0
Thank you so much. But I'm new to coding. Can you now help explain it? Please. That std:: thing.
0
of course. so std:: is a namespace. a namespace can be thought of as a way to ID a class. I'm c++ the most common class we use is the standard class. this contains our cins,couts, even our strings. the :: portion just separates the namespace and what were looking for. commonly what you'll see is people do this
using namespace std;
what that does is it tells the compiler "hey, when yu run up against something that you don't see, check it against the std namespace". you can use the using method to save yourself a lot of typing
0
so if we modify the code with using namespace std
we get this:
#include <iostream>
#include <bitset>
using namespace std;
int main()
{
int myDecimalNumber;
cin >> myDecimalNumber;
string binary = bitset<8>(myDecimalNumber).to_string(); //to binary
cout<<binary<<"\n";
unsigned long decimal = bitset<8>(binary).to_ulong();
cout<<decimal<<"\n";
return 0;
}
0
Okay. I get it now. Thank you so much.
0
Well, my language professor gave us these challenges. So, when I went up to him with this problem some days ago, he mailed me this-
0
int dectobin(int dec, int power_of_two)
{
if(dec == 0)
{
cout<<"0";
}
else if(dec/(int)pow(2, power_of_two))
{
int remainder = dectobin(dec, power_of_two+1);
if(remainder/(int)pow(2, power_of_two))
{
cout<<"1";
return remainder - (int)pow(2, power_of_two);
}
else
{
cout<<"0";
return remainder;
}
}
else
{
return dec;
}
}
0
Now, you're working on this, it might help you somehow. So, I sent you. 'Cz I'm not able to understand the logic.
0
he's using a VERY round about way to get this done. honestly it's much slower and from glancing over it quickly it's error prone I believe, haven't tested I yet. I would stick with the bitset method, it will provide you with accurate results and will be much faster
0
True. Yours is lot easier. Although, I'm searching google for those string binary=..........to_string (); for I'm new to such coding. But I could understand your logic. It's just that I haven't used bitset before. It's simple unlike my Sir's.
0
And do provide me. Thank you, again.
0
what to_string(); does is it takes a value and converts it to a string so it's workable. in our case we want to be able to print the results out to the screen so we convert it to a string and it just becomes easier to print out. bitset is just one of those predefined functionalities of c++. The best advice I can give to someone learning any programing language is to research. if you come across something that you don't recognize or it doesn't quite make sense find a reference for it. stack overflow and msdn are great places to clarify things. I use those two sites all the time
0
I'll get to those sites. Yeah. Research. That's the only way we can learn something.
Well, I'm clear with to_string (); now and so with to_ulong ();
0
awesome, and I mistyped something. the idea of it being workable is the same but I glossed over an important part. with the code I gave you, we made the variable binary a string. we then set it equal to the bitset function. however the bitset function will return a different variable type, an unsigned long. so that's why we have to comvert it to_string and to_ulong, it just makes it the same variable type as what we told it it should be
0
Okay. I'm clear with it now. Thank you. I'll refer to you next time I get into some trouble. You explain very well.
0
Suppose input decimal number is 13
Step 1. 13/2 , Remainder = 1, Quotient = 6
Step 2. 6/2 , Remainder = 0, Quotient = 3
Step 3. 3/2 , Remainder = 1, Quotient = 1
Step 4. 1/2 , Remainder = 1, Quotient = 0
Now, the Binary equivalent of 13 is the remainders in reverse order : 1101
Here is the C program to convert decimal ti number and vice versa
http://www.techcrashcourse.com/2015/08/c-program-to-convert-decimal-number-binary.html
http://www.techcrashcourse.com/2017/01/cpp-program-to-convert-binary-to-decimal.html
- 1
Wonderful! Welcome to c++, I hope you enjoy your stay!