好的...邏輯是..我傳遞一個整數變量具有二進制數...說(11010101)這是十進制213 ...我試圖將二進制轉換爲十進制
該函數將找到二進制數字的位數爲8,然後它將運行多次的循環。然後如果該二進制數字的第k個數字是1,那麼它會將2^k加到變量if二進制數的第k位是0 ...我只是略過它...
所以1 = 128 1 = 64 0 = 0 1 = 16 0 = 0 1 = 4 0 = 0 1 = 1 - ----- ------
多數民衆贊成在邏輯....但wheni運行它...我一直得到的答案爲 0 ...你們能幫我嗎?
因此,這裏的代碼..
int toDecimal(int number,int base){
if (base==2) {
int i, n=number, dec=0, d1, d=0;
while(n!=0){
n=n/10;
++d;
}
d1=d;
for(i=0;i<d;i++){
if(n%10==1){
dec+=pow(2,--d1);
n=n/10;
}
else{
--d1;
n=n/10;
}
}
return dec;
}
return 0;
}
一般建議:較長的變量名稱不會花費更多。理解'number_of_digits'表示的內容比理解'd'表示的內容要容易得多。 – 2014-09-30 14:18:49
您必須在找到數字位數後重置'n'。 – mch 2014-09-30 14:20:42
@sharath gr8 ...點採..謝謝你的提示:) ....所以你找到爲什麼我一直得到0? – 2014-09-30 14:21:08