Re: [問題] 用 bitwise operator 把十進位轉成二進位

看板C_and_CPP作者 (Tangent)時間14年前 (2011/03/13 15:06), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《nmns0110 (君詠)》之銘言: : 開發平台(Platform): (Ex: VC++, GCC, Linux, ...) : Dev-C++, Win7 : 餵入的資料(Input): : 3 : 預期的正確結果(Expected Output): : 000 : 001 : 010 : 011 : 100 : 101 : 110 : 111 : 錯誤結果(Wrong Output): : 000 : 111 : 000 : 111 : 000 : 111 : 000 : 111 : 程式碼(Code):(請善用置底文網頁, 記得排版) : int length,i,j; : char *binary = 0; : length = (int) ceil( log(n)/log(2) ); : binary = (char*) malloc( sizeof(char)*(length+2) ); : binary[length+1] = NULL; : for( i = 0; i < pow(2,n); i++ ) : { : for( j = length; j >= 0; j-- ) : { : if( n&1 ) : binary[j] = '1'; : else : binary[j] = '0'; : n >> 1; : } : printf("%s\n",binary); : } : 補充說明(Supplement): : 這幾天才剛開始學 C (之前是學C++,不過也沒有很紮實..) : 希望問的問題不會太笨 >"< 我想應該是這樣 for( i = 0; i < pow(2,n); i++ ) { int temp=i; for( j = length; j >= 0; j-- ) { if( temp&1 ) binary[j] = '1'; else binary[j] = '0'; temp = temp >> 1; } printf("%s\n",binary); } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.240.128.241

03/13 23:12, , 1F
原來是要 temp = temp >> 1, 感謝大大!
03/13 23:12, 1F
文章代碼(AID): #1DVDrQSQ (C_and_CPP)
文章代碼(AID): #1DVDrQSQ (C_and_CPP)