有人在悟空問答裡問我:什麼是模2運算?在這裡,我就用淺顯的語言,來為大家說說這有趣的模2運算。
首先這個問題涉及到遠古20000年至今還被廣泛應用;其次這個問題橫亘哲學、數學、現代計算機技術、通信技術等諸多學科,涉獵廣泛,作為一個科普題目來說,非常有意義。
“模2運算”在我們上大學裡應用數學裡進制轉換裡涉及到,學習計算機及相關專業的基礎學科裡也學習到。
一、什麼是模?什麼是“模2運算”
那麼什麼是“模”呢?“模”是英語“modulo”的音譯,也簡稱為“mod”,作為名詞是“模;模數;系數;模量”的意思;作為介詞是“對…取模”的意思;而作為動詞是“按模計算”的意思。是不是一頭霧水了?那麼說中國話,模就是對一個整數求餘數的運算,也稱為“取模運算”或者“取餘運算”,這兩種運算不太一樣,當被“模”的整數為正數時,兩種運算是一樣的,當“模”的整數為負數時,兩種運算就不一樣了,這裡就不展開讨論了。為了好理解,我們可以理解為“模”就是對一個整數求餘數的那個被除數。當這個被除數為“2”時,我們就稱為“模2運算”。比如:5 MOD 2 餘 1,這裡2就是模數。
二、“模2運算”原理是什麼?
其實“模 2運算”原理很簡單 ,就是數學中二進制的四則運算,包含“加”、“減”、“乘”“除”,其規則和我們十進制裡加減乘除四則運算規則是一樣的,而不一樣的是不考慮借位或進位的問題(有進位時,保留計算本位數 ,而不向前一位進位;減法時不夠減,相當于從前一位借1當2,而前一位并不減少)這樣,“模2運算”後,結果具有隻針對本位有效,而對上一位、下一位不産生影響的特點。
模2加法:
0 0 =0,1 0 = 0 1 =1,1 1=0
模 2加法是 以最後位對齊豎列相加,根據模2運算法則,可以簡單總結為:奇數個1相加得1,偶數個1相加得0
模2減法:
0-0 = 0,1-1 = 0,1-0=1,0-1=1
第四式代表了模2減法的特征,從它也可得出 1=-1的結論
模2乘法:
一位數的模2乘法定義如下:0×0=0,0×1=0,1×0=0,1×1=1
多位數的模2乘法與普通乘法一樣演算,唯一的區别是,部分積相加時按模2加,即奇數個1相加得1,偶數個1相加得0。
模2除法:
模2除法是模2乘法的逆運算。模2除法具有下列三個性質:
1、當最後餘數的位數小于除數位數時,除法停止。
2、當被除數的位數小于除數位數時,則商數為0,被除數就是餘數。
3、隻要被除數或部分餘數的位數與除數一樣多,且最高位為1,不管其他位是什麼數,皆可商1。
三、“模 2運算”是為什麼發明的?
“模2運算”是為了機器運算而發明的。
這是德國天才大師萊布尼茨(Gottfried Wilhelm Leibniz,1646 - 1716)受中國《周易》影響和啟發,為了解決機器運算的方法,發明了完整的二進制運算法則。萊布尼茨在1679年3月15日記錄下他的二進制體系的同時,還設計了一台可以完成機械計算的機器。這也為200多年以後電子計算機的發明奠定了基礎。
萊布尼茨
四、現在“模2運算”主要應用
“模2運算”應用十分廣泛,主要應用于數據存儲及數據傳輸、數據通信時對數據正确性的校驗方面。著名的通訊協議X.25的FCS(幀檢錯序列)采用的是CRC-CCITT,WinRAR、NERO、ARJ、LHA等壓縮工具軟件采用的是CRC32,磁盤驅動器的讀寫采用了CRC16,通用的圖像存儲格式GIF、TIFF等也都用CRC作為檢錯手段。
由于我們現代的通信技術都是采用數字技術,在傳輸中,存在着模-數、數-模多次轉換 。在數字傳輸中,都是将各種信息轉換為二進制進行傳輸的。傳輸有可能是有線傳輸,也可能是無線傳輸。受傳輸手段或者傳輸距離等影響,不可避免産生幹擾,對傳輸質量肯定要帶來影響。于是,人們就發明了一個在傳輸數據的同時,加上一個“校驗數據”。現在數字通信采用的是CRC(Cyclic Redundancy Check)校驗方法也叫循環冗餘校驗方法。
其特點是:檢錯能力強,開銷小,易于用編碼器及檢測電路實現。從其檢錯能力來看,它所不能發現的錯誤的幾率僅為0.0047%以下。從性能上和開銷上考慮,均遠遠優于奇偶校驗及算術和校驗等方式。
由于篇幅有限,我就不一一展開說明,以後我會以文章形式進行科普。
【長春雅詩軒】是科普創作号,白話科學系列,是用通俗易懂的語言,為大家進行科普。也可作為青少年了解高新科技的課外讀物,希望大家能夠喜歡。
更多請關注【長春雅詩軒】
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!