KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I'm currently working on a simulation of the MIPS processor in C++ for a comp architecture class and having some problems converting from decimal numbers to binary (signed numbers both ways). Everything's working fine until the very last bit because my current algorithm falls into out of bounds areas for int on 1<<=31. Just need a nudge in the right direction to get it up and running. Thanks! //Assume 32 bit decimal number string DecimalToBinaryString(int a) { string binary = ""; int mask = 1; for(int i = 0; i < 31; i++) { if((mask&a) >= 1) binary = "1"+binary; else binary = "0"+binary; mask<<=1; } cout<<binary<<endl; return binary; } I'm also including my other algorithm for completeness. I apologize for the lack of comments, but it's fairly straight forward. int BinaryStringToDecimal(string a) { int num = 0; bool neg = false; if(a.at(0) == '1') { neg = true; for(int x = a.length()-1; x >= 0; x--) { if(a.at(x) == '1') a.at(x) = '0'; else a.at(x) = '1'; } a.at(a.length()-1) += 1; for(int x = a.length()-1; x >= 0; x--) { if(a.at(x) == '2') { if(x-1 >= 0) { if(a.at(x-1) == '1') a.at(x-1) = '2'; if(a.at(x-1) == '0') a.at(x-1) = '1'; a.at(x) = '0'; } } else if(a.at(x) == '3') { if(x-1 >= 0) a.at(x-1) += '2'; a.at(x) = '1'; } } if(a.at(0) == '2') a.at(0) = '0'; else if(a.at(0) == '3') a.at(0) = '1'; } for(int x = a.length()-1; x >= 0; x--) { if(
Tags (comma-separated)
Save Edits
Cancel