Re: [問題] 直接對二進位做處理

看板C_and_CPP作者 (是黑是白)時間13年前 (2012/01/03 12:25), 編輯推噓3(3010)
留言13則, 6人參與, 最新討論串3/3 (看更多)
先謝謝大家的回覆 還有一位大大寄信過來教我用函式的方式做 非常感激!!! 目前DrStein大回文的方法最適合我的情況 不過..code看不太懂 有沒有人可以幫忙解說一下Orz =========================================================================== #define HEX__(n)(0x##n##LU) #define B8__(AA)( \ ( (AA) & 0x0000000fLU)? 0x01:0 \ + ( (AA) & 0x000000f0LU)? 0x02:0 \ + ( (AA) & 0x00000f00LU)? 0x04:0 \ + ( (AA) & 0x0000f000LU)? 0x08:0 \ + ( (AA) & 0x000f0000LU)? 0x10:0 \ + ( (AA) & 0x00f00000LU)? 0x20:0 \ + ( (AA) & 0x0f000000LU)? 0x40:0 \ + ( (AA) & 0xf0000000LU)? 0x80:0 \ ) #define BINARY8( AA ) (unsigned char)B8__( HEX__(AA) ) #define BINARY16( HH, LL) (unsigned short) ( BINARY8(LL) + (BINARY8(HH)<< 8) ) #define BINARY32( HH,LH, HL, LL) (unsigned int)( BINARY16(HL, LL) + (BINARY16(HH, LH)<< 16) ) ======================================================================= p.s.上面的code好像只有8.16.32進位?該怎麼改成二進位呢 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.255.167.64

01/03 20:36, , 1F
不是 8 16 32 進位 是 8 16 32 bit...
01/03 20:36, 1F

01/03 20:48, , 2F
話說回來感覺好像隔一陣子就會有新手來問進位問題
01/03 20:48, 2F

01/03 20:49, , 3F
前一陣子才在 java 版回了一篇文章在講這個...
01/03 20:49, 3F

01/03 20:49, , 4F
原 PO 看來要的是"直接寫出二進位"
01/03 20:49, 4F

01/03 20:50, , 5F
不過個人以為用十六進位或八進位來寫會更容易理解一點就是..
01/03 20:50, 5F

01/03 20:51, , 6F
我自己是會像前面推文說的腦內轉換啦
01/03 20:51, 6F

01/03 20:52, , 7F
16進位只要腦內有個表, 其實看起來會比較快
01/03 20:52, 7F

01/03 21:27, , 8F
如果只是要輸出2進位用
01/03 21:27, 8F

01/03 21:29, , 9F
!!(a & (128 >> i)) 然後用for吧?
01/03 21:29, 9F

01/04 11:38, , 10F
輸出有std::bitset::to_string
01/04 11:38, 10F

01/04 15:07, , 11F
最後用效率不高的方式寫出來了Orz
01/04 15:07, 11F

01/04 15:07, , 12F
謝謝大家!
01/04 15:07, 12F

01/04 21:39, , 13F
Bitset可以這麼用 http://ideone.com/LvPge
01/04 21:39, 13F
文章代碼(AID): #1F0lEe7i (C_and_CPP)
文章代碼(AID): #1F0lEe7i (C_and_CPP)