搜尋此網誌

2014年1月8日 星期三

漢明碼

因為2的0次方,2的1次方,2的2次方...(以下類推)要作為漢明碼
的填入位置,所以先寫成如下這樣

1   2   3   4   5   6   7   8   9   先在紙上寫出1-9再將資料
          1       1   0   1       0   由左至右順序填入

為什麼有四個空格(或者說怎麼知道要空這四格),是因為有一個
公式:2^K>=M+K+1(M就是資料位元有5,所以2^K要>=5+K+1,算出
K=4)

接下來再畫一個如下的表
     8   4   2   1        ←這一行只是方便我們看十進位的值是多少
1   0   0   0   □         ←先留空格是因為還不知道該填什麼
2   0   0   □   0          填表的方式是
3   0   0   1   1          (a)若資料為 0 則相對應的位置填 0。
4   0   □   0   0          (b)若資料為 1 則以其相對應的位置值
5   0   1   0   1             化成二進位碼,並填入相對應的位置中。
6   0   0   0   0        ←所以這一行才會都是0
7   0   1   1   1        ←這一行就是因為上面7的地方是1所以改為
8   □   0   0   0          二進制後填入
9   0   0   0   0        ←這一行也都是0
---------------------

再來就要依另一個規則決定漢明碼:各數位的 1 值個數需為偶數個
依此原則決定所有漢明碼的值
     8   4   2   1
1   0   0   0   □         ←空格填1,最右邊這行由上往下數有3個1,如
2   0   0   □   0          果要湊成偶數個1,則空格要填入1
3   0   0   1   1
4   0   □   0   0        ←空格填0,因為由上往下數已經有2個1,所以
5   0   1   0   1          不用另外填1
6   0   0   0   0
7   0   1   1   1
8   □   0   0   0
9   0   0   0   0
---------------------

再回到剛剛寫的兩列數字
1   2   3   4   5   6   7   8   9
        1       1   0   1       0
1   0       0               0       這時候就知道空白該填入什麼了
----------------------------------
1   0   1   0   1   0   1   0   0   所以兩個合併出來的就是漢明碼
                                        也就是(101010100)


------------------------分隔線------------------------------

再來舉錯誤更正
題目:101010101

一樣先寫出1-9,這次不用什麼公式了,因為資料就是9位元,而且我們
現在要反推,所以也不用空格
1   2   3   4   5   6   7   8   9
1   0   1   0   1   0   1   0   1   ←同樣由左至右順序填入

再來畫一個表格,照上面所說的填表方式填入
     8   4   2   1
1   0   0   0   1
2   0   0   0   0
3   0   0   1   1
4   0   0   0   0
5   0   1   0   1
6   0   0   0   0
7   0   1   1   1
8   0   0   0   0
9   1   0   0   1
-------------------

這時候可以記一個規則,一行內有奇數個1則線下方填1,反之,有偶數個1
則線下方填0。所以可以把表改成這樣:
     8   4   2   1
1   0   0   0   1
2   0   0   0   0
3   0   0   1   1
4   0   0   0   0
5   0   1   0   1
6   0   0   0   0
7   0   1   1   1
8   0   0   0   0
9   1   0   0   1
-------------------
    1   0   0   1

把線下方取得的二進位碼轉成十進位得到9,這代表第"9"個位元出錯了,
所以把原來題目(101010101)的第9個位元(一樣由左往右算)改成0,
得到答案(101010100。其實就是第一題的漢明碼啦^_^)


文章出處:http://hwtm.pixnet.net/blog/post/566437

2014年1月5日 星期日

做什麼,像什麼

偶然的一次機會在臉書上看到張老師對於彥儒學長的狀態留了這麼一句話"做什麼,像什麼",很簡單的一句話,卻讓我一直謹記在心中。人生要面對的事情有好多,比如當兵,比如找工作,比如讀書,但在每一個當下,記住自己的身分,該做什麼就去做什麼,不要想太多,這樣的自己才會開心且自在,當個稱職的替代役,當個孝順的兒子,當個貼心的男友,當個努力的人,人生圓滿且無憾。

人生需要很多夢,來讓自己有動力,但更重要的事要讓自己的夢做的大一點,因為這樣的自己才會更加努力,雖然最後這個大夢不一定會實現,但因為自己設定的夢夠大,我相信在最後結束回顧這一切的時候才會知道自己其實已經完成了不少自己預料外的目標。

"當努力的想要完成某件事的時候,你會發現全宇宙都會推你一把"

"當有一天早晨喚醒你的不是時鐘,而是夢想,那是多麼令人興奮的時刻"

「開拓視野,看見世界,貼近彼此,感受生活,這就生活的目的。」by"白日夢冒險王"

2014期許自己以後的每一年來檢視自己的時候都能名符其實,"做什麼,像什麼"。