作者bwtalk (是黑是白)
看板C_and_CPP
標題Re: [問題] 直接對二進位做處理
時間Tue Jan 3 20:25:10 2012
先謝謝大家的回覆
還有一位大大寄信過來教我用函式的方式做 非常感激!!!
目前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
推 LPH66:不是 8 16 32 進位 是 8 16 32 bit... 01/03 20:36
推 LPH66:話說回來感覺好像隔一陣子就會有新手來問進位問題 01/03 20:48
→ LPH66:前一陣子才在 java 版回了一篇文章在講這個... 01/03 20:49
→ LPH66:原 PO 看來要的是"直接寫出二進位" 01/03 20:49
→ LPH66:不過個人以為用十六進位或八進位來寫會更容易理解一點就是.. 01/03 20:50
→ LPH66:我自己是會像前面推文說的腦內轉換啦 01/03 20:51
→ loveme00835:16進位只要腦內有個表, 其實看起來會比較快 01/03 20:52
→ tjjh89017:如果只是要輸出2進位用 01/03 21:27
→ tjjh89017:!!(a & (128 >> i)) 然後用for吧? 01/03 21:29
推 Chikei:輸出有std::bitset::to_string 01/04 11:38
→ bwtalk:最後用效率不高的方式寫出來了Orz 01/04 15:07
→ bwtalk:謝謝大家! 01/04 15:07