2011-04-24 98 views
1

我寫了十進制和二進制基數系統之間的轉換函數,這裏是我的原代碼:十進制轉換爲二進制的轉換

while(number) 

void binary(int number) 
{ 
    vector<int> binary; 

    while (number == true) 
    { 
     binary.insert(binary.begin(), (number % 2) ? 1 : 0); 
     number /= 2; 
    } 

    for (int access = 0; access < binary.size(); access++) 
     cout << binary[access]; 
} 

,直到我做了這個它沒有然而工作

有什麼不對

while(number == true) 

,什麼是兩種形式之間的差別? 在此先感謝。

回答

8

當你說while (number)number,這是一個int,轉換爲類型bool。如果它爲零,則它變成false,如果它不爲零,則變成true

當你說while (number == true),該true轉換爲int(成爲1),它是一樣的,如果你說的while (number == 1)

+0

感謝您的澄清,我還在學習和推廣型有時逃避我。 – 2011-04-24 08:17:53

0

這裏是我的代碼....

#include<stdio.h> 
#include<string.h> 
#include<stdlib.h> 
#include<math.h> 
#include<unistd.h> 
#include<assert.h> 
#include<stdbool.h> 
#define max 10000 
#define RLC(num,pos) ((num << pos)|(num >> (32 - pos))) 
#define RRC(num,pos) ((num >> pos)|(num << (32 - pos))) 

void tobinstr(int value, int bitsCount, char* output) 
{ 
    int i; 
    output[bitsCount] = '\0'; 
    for (i = bitsCount - 1; i >= 0; --i, value >>= 1) 
     { 
      output[i] = (value & 1) + '0'; 
     } 
} 


    int main() 
    { 
    char s[50]; 
    tobinstr(65536,32, s); 
    printf("%s\n", s); 
    return 0; 
    }