頁:
[1]
麻煩幫我解惑一下(有關十進位轉成其他進位的表示法)~"~
本帖最後由 Seed1992 於 2011-9-21 08:57 AM 編輯小弟首次在這裡發文...
他要求輸入數字之後
可以把它分別切成2;8;16進位的表示法
不知道我的程式碼算不算錯...應該是不能就直接這麼寫
我的寫法寫出來後他所輸出的數字排序會是反的
不知道正確的寫法應該是如何!?
又或是說~可以直接從我的寫法改進!?
#include<iostream>
using namespace std;
void main(){
int number;
cout << "Enter a positive decimal integer: ";
cin >> number;
cout << "\n";
for (int a = number;a > 0;a /= 2){
if (a%2 == 1)
cout << "1";
else
cout << "0";
}
cout << "\n";
for (int b = number;b > 0;b /= 8){
if (b%8 == 1)
cout << "1";
else if (b%8 == 2)
cout << "2";
else if (b%8 == 3)
cout << "3";
else if (b%8 == 4)
cout << "4";
else if (b%8 == 5)
cout << "5";
else if (b%8 == 6)
cout << "6";
else if (b%8 == 7)
cout << "7";
else
cout << "0";
}
cout << "\n";
for (int c = number;c > 0;c /= 16){
if (c%16 == 1)
cout << "1";
else if (c%16 == 2)
cout << "2";
else if (c%16 == 3)
cout << "3";
else if (c%16 == 4)
cout << "4";
else if (c%16 == 5)
cout << "5";
else if (c%16 == 6)
cout << "6";
else if (c%16 == 7)
cout << "7";
else if (c%16 == 8)
cout << "8";
else if (c%16 == 9)
cout << "9";
else if (c%16 == 10)
cout << "A";
else if (c%16 == 11)
cout << "B";
else if (c%16 == 12)
cout << "C";
else if (c%16 == 13)
cout << "D";
else if (c%16 == 14)
cout << "E";
else if (c%16 == 15)
cout << "F";
else
cout << "0";
}
cout << "\n";
system("pause");
}
(這算是個蠢方法吧= =")...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div><div></div> 本帖最後由 塔拉 於 2011-9-19 01:15 PM 編輯
首次發文記得看板規= ="
會相反的原因是因為你先處理低位元 然後就直接輸出
導致輸出位置是從高位元往低位元的方向排
簡單一點可以用遞迴方式處理
void bin(int input)
{
if(input>1)
bin(input/2);
if(input%2 == 0)
cout<<0;
else
cout<<1;
}另外二進位也可以用位元的方式處理 會比較有效率
C++的Stream Manipulator(串流操作子 是這樣翻嗎?)
可以直接處理8,10,16進位的輸出輸入cout<<oct<<number<<endl;
cout<<hex<<number<<endl;...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>
頁:
[1]