![]() |
||
Senior Member
![]() ![]() ![]() 加入日期: Nov 2004 您的住址: Davy Jones' Locker
文章: 1,104
|
[求救]懂程式語言的前輩們!請教問題!
目前還在學習程式的階段.堪稱新手中的新手以下有幾個程式語言的問題想請教各位前輩們!
現在有一個表 例如 000000000000000 000010100110111 000101001101110 000111101011001 001000111101011 有這五個數值 現在如果我輸入是 000000000000011 要怎樣知道正確的答案其實是 000000000000000 這個數值呢? 請問是用if else 一個一個寫下去比對嗎? 還是有更好的辦法呢? |
|||||||
![]() |
![]() |
*停權中*
加入日期: Dec 2001
文章: 800
|
看不懂你講什麼
000000000000011 怎麼變成 000000000000000 |
||
![]() |
![]() |
Senior Member
![]() ![]() ![]() 加入日期: Nov 2004 您的住址: Davy Jones' Locker
文章: 1,104
|
引用:
抱歉沒說清楚 就是錯誤更正就對了.. 因為來源碼000000000000000可能在傳輸途中因訊號減弱或者miss導致接收到的碼為000000000000011 但是必須把錯誤的000000000000011更正為000000000000000 |
|
![]() |
![]() |
*停權中*
加入日期: Dec 2001
文章: 800
|
那
000010100110111 000101001101110 000111101011001 001000111101011 是幹啥用的 |
![]() |
![]() |
Junior Member
![]() ![]() ![]() 加入日期: Jul 2004 您的住址: Verthandi的懷裡
文章: 766
|
記得不是有用查表的寫法嗎
記得是用[switch case]下去寫的 太久沒用C忘光光了 = = |
![]() |
![]() |
*停權中*
加入日期: Dec 2001
文章: 800
|
這個不會是要用CRC32吧
|
![]() |
![]() |
Senior Member
![]() ![]() ![]() 加入日期: Nov 2004 您的住址: Davy Jones' Locker
文章: 1,104
|
引用:
那就是一張正確的表裡面的正確碼 共32碼 table1 = 000000000000000; table2 = 000010100110111; table3 = 000101001101110; table4 = 000111101011001; table5 = 001000111101011; table6 = 001010011011100; table7 = 001101110000101; table8 = 001111010110010; table9 = 010001111010110; table10 = 010011011100001; table11 = 010100110111000; table12 = 010110010001111; table13 = 011001000111101; table14 = 011011100001010; table15 = 011100001010011; table16 = 011110101100100; table17 = 100001010011011; table18 = 100011110101100; table19 = 100100011110101; table20 = 100110111000010; table21 = 101001101110000; table22 = 101011001000111; table23 = 101100100011110; table24 = 101110000101001; table25 = 110000101001101; table26 = 110010001111010; table27 = 110101100100011; table28 = 110111000010100; table29 = 111000010100110; table30 = 111010110010001; table31 = 111101011001000; table32 = 111111111111111; 假設 我現在輸入000000000000011 然後一直跟表中數值比較比較到最後找到相似的000000000000000 就把正確數值輸出 大概就是這樣子吧~說真的 我只知道是這樣 但是不知道怎樣寫= =" 就是寫個具有錯誤更正的程式就對了~ |
|
![]() |
![]() |
*停權中*
加入日期: Dec 2001
文章: 800
|
簡單講一下好了
這個應該是考你演算法 我不知道是不是最快的方式 A=000000000000011 B(0)~B(31)=table1~table32 用迴圈將A跟B(0)~b(31)相減得到C(0)~C(31)(大減小) 例如 000000000000011-000000000000000=000000000000011 000010100110111-000000000000011=000010100110100 000101001101110-000000000000011=000101001101011 ............... 然後判別C當中有幾個0 最多0的就是答案 |
![]() |
![]() |
Senior Member
![]() ![]() ![]() 加入日期: Nov 2004 您的住址: Davy Jones' Locker
文章: 1,104
|
引用:
感謝前輩指導 好像就是這樣子~ 我先寫寫看 非常感謝Orz" |
|
![]() |
![]() |
New Member
加入日期: Feb 2005
文章: 2
|
如果要快一點的話
用bitwise AND 運算, 再計算bit string中1 的次數 如果是用c++ 的話, 印象中STL 有Bitmap 的class可用, 應該很快就可以做出來 引用:
|
|
![]() |
![]() |