Re: [問題] 如何取用二位元陣列的每一種狀況

看板C_and_CPP (C/C++)作者 (大資佬)時間19年前 (2005/09/12 19:33), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串1/1
※ 引述《tititata ()》之銘言: : 假設有一個陣列 u[7] = {0}; 陣列中每一個元素只能是 0 或 1 : 請問要怎麼寫,才能夠把從 [0 0 0 0 0 0 0 ] 到 [1 1 1 1 1 1 1] : 每一種狀況都拿來用呢? : 我只有想到用 7 個 for 的方法... ^^; : 謝謝~~ #include<stdio.h> int main() { int u[7]={0}; int Ubound=1<<7; int i,j; for(i=0;i<Ubound;i++){ for(j=0;j<7;j++) u[j]=(i&(1<<j))?1:0; for(j=0;j<7;j++) printf("%d,",u[j]); puts(""); } return 0; } 用0跑到127應該是長這樣(二進位) 0000000 0000001 0000010 0000011 ... 1111110 1111111 然後用1<<j(也就是2的j次方)去偵測是否這個位元為0或1 不過出來的結果是反過來的..... 0000000 1000000 0100000 ... 這個就自己調整吧... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.230.57.82

61.230.57.82 09/13, , 1F
補充 (33&(1<<5))是32 而不是1 所以才用?:來判斷
61.230.57.82 09/13, 1F
文章代碼(AID): #139MToIb (C_and_CPP)
文章代碼(AID): #139MToIb (C_and_CPP)