首頁 > 知識庫 > 正文

余效介紹 了解余效的詳細內容

展開全部CRC(Cyclic Redundancy Check)循環冗余校驗碼 是常用的校驗碼,在早期的通信中運用廣泛,因為早期的通信技術不夠可32313133353236313431303231363533e4b893e5b19e31333231623631靠(不可靠性的來源是通信技術決定的,比如電磁波通信時受雷電等因素的影響),不可靠的通信就會帶來‘確認信息’的困惑,書上提到紅軍和藍軍通信聯合進攻山下的敵軍的例子,第一天紅軍發了條信息要藍軍第二天一起進攻,藍軍收到之后,發一條確認信息,但是藍軍擔心的是‘確認信息’如果也不可靠而沒有成功到達紅軍那里,那自己不是很危險?于是紅軍再發一條‘對確認的確認信息’,但同樣的問題還是不能解決,紅軍仍然不敢冒然行動。 對通信的可靠性檢查就需要‘校驗’,校驗是從數據本身進行檢查,它依靠某種數學上約定的形式進行檢查,校驗的結果是可靠或不可靠,如果可靠就對數據進行處理,如果不可靠,就丟棄重發或者進行修復。 CRC碼是由兩部分組成,前部分是信息碼,就是需要校驗的信息,后部分是校驗碼,如果CRC碼共長n個bit,信息碼長k個bit,就稱為(n,k)碼。 它的編碼規則是: 1、首先將原信息碼(kbit)左移r位(k+r=n) 2、運用一個生成多項式g(x)(也可看成二進制數)用模2除上面的式子,得到的余數就是校驗碼。 非常簡單,要說明的:模2除就是在除的過程中用模2加,模2加實際上就是我們熟悉的異或運算,就是加法不考慮進位,公式是: 0+0=1+1=0,1+0=0+1=1即‘異’則真,‘非異’則假。 由此得到定理:a+b+b=a 也就是‘模2減’和‘模2加’直值表完全相同。 有了加減法就可以用來定義模2除法,于是就可以用生成多項式g(x)生成CRC校驗碼。例如: g(x)=x4+x3+x2+1,(7,3)碼,信息碼110產生的CRC碼就是: 10111101 | 110,0000 111 01 1 0100 1 1101 1001余數是1001,所以CRC碼是110,1001標準的CRC碼是,CRC-CCITT和CRC-16,它們的生成多項式是: CRC-CCITT=x16+x12+x5+1 CRC-16=x16+x15+x2+1*展開全部CRC,它的全稱是“Cyclic Redundancy Check”,中文名是“循環冗余碼”,"CRC校驗"就是“循環冗余校驗”。 CRC有什么用呢?它的應用e68a84e8a2ad3231313335323631343130323136353331333231623631范圍很廣泛,最常見的就是在網絡傳輸中進行信息的校對。其實我們大可以把它應用到軟件保護中去,因為它的計算是非常非常非常嚴格的。嚴格到什么程度呢?你的程序只要被改動了一個字節(甚至只是大小寫的改動),它的值就會跟原來的不同。所以只要給你的“原”程序計算好CRC值,儲存在某個地方,然后在程序中隨機地再對文件進行CRC校驗,接著跟第一次生成并保存好的CRC值進行比較,如果相等的話就說明你的程序沒有被修改/破解過,如果不等的話,那么很可能你的程序遭到了病毒的感染,或者被Cracker用16進制工具暴力破解過了。我們先來看看CRC的原理。首先看兩個式子:式一:9 / 3 = 3(余數 = 0)式二:(9 + 2 ) / 3 = 3 (余數 = 2)上面的兩個式子可以用二進制計算為:式一:1001--> 90011---> 3---------0110--> 60011---> 3---------0011--> 30011---> 3---------0000--> 0,余數一共減了3次,所以商是3,而最后一次減出來的結果是0,所以余數為0式二:1011--> 110011---> 3---------1000--> 80011---> 3---------0101--> 50011---> 3---------0010--> 2,余數一共減了3次,所以商是3,而最后一次減出來的結果是2,所以余數為2 二進制減法運算的規則是,如果遇到0-1的情況,那么要從高位借1,就變成了(10+0)-1=1CRC運算有什么不同呢?讓我們看下面的例子:這次用式子30 / 9,不過請讀者注意最后的余數:11110--> 301001---> 9--------- 1100--> 12(很奇怪吧?為什么不是21呢?) 1001 ---> 9-------- 101--> 5,余數 --> the CRC!這個式子的計算過程是不是很奇怪呢?它不是直接減的,而是用XOR的方式來運算,最后得到一個余數。對啦,這個就是CRC的運算方法,明白了嗎?CRC的本質是進行XOR運算,運算的過程我們不用管它,因為運算過程對最后的結果沒有意義;我們真正感興趣的只是最終得到的余數,這個余數就是CRC值。進行一個CRC運算我們需要選擇一個除數,這個除數我們叫它為“poly”,寬度W就是最高位的位置,所以我剛才舉的例子中的除數9,這個poly 1001的W是3,而不是4,注意最高位總是1。(別問為什么,這個是規定)如果我們想計算一個位串的CRC碼,我們想確定每一個位都被處理過,因此,我們要在目標位串后面加上W個0位。現在讓我們根據CRC的規范來改寫一下上面的例子:Poly=1001,寬度W = 3位串Bitstring =11110Bitstring + W zeroes=11110 + 000 = 11110000111100001001||||-------------- 1100||| 1001|||------------- 1010|| 1001||------------ 0110| 0000|----------- 1100 1001---------- 101--> 5,余數 --> the CRC!還有兩點重要聲明如下:1、只有當Bitstring的最高位為1,我們才將它與poly進行XOR運算,否則我們只是將Bitstring左移一位。2、XOR運算的結果就是被操作位串Bitstring與poly的低W位進行XOR運算,因為最高位總為0。下面我講講具體怎么編程。 由于速度的關系,CRC的實現主要是通過查表法,對于CRC-16和CRC-32,各自有一個現成的表,大家可以直接引入到程序中使用。 這個表的C語言描述如下:for (i = 0; i < 256; i++){ crc = i; for (j = 0; j < 8; j++) { if (crc & 1) crc = (crc >> 1)^ 0xEDB88320; else crc >>= 1; } crc32tbl = crc;} 生成表之后,就可以進行運算了。我們的算法如下:1、將寄存器向右邊移動一個字節。2、將剛移出的那個字節與我們的字符串中的新字節進行XOR運算,得出一個指向值表table[0..255]的索引。3、將索引所指的表值與寄存器做XOR運算。4、如果數據沒有全部處理完,則跳到步驟1。這個算法的C語言描述如下:temp = (oldcrc ^ abyte) & 0x000000FF;crc= (( oldcrc >> 8) & 0x00FFFFFF) ^ crc32tbl[temp];return crc;www.odisxu.buzz*??*?

余效

拼音:

-----

答:天涯明月刀文士樂伶曲譜效果及余音效果一覽;其中文士僅可使用【笛曲】,樂伶僅可使用【琴曲】。從表格可以看出,文士的余音效果偏防御,樂伶偏攻擊。 如果你是平民,

解釋:

1.猶后效。

.

答:CRC校驗是循環冗余校驗,下面是C#的代碼。 protected byte[] GetCRC(byte[] b, int offset, int len) { byte CRC16Lo = 0; byte CRC16Hi = 0; byte bytC; byte bytTreat; byte bytBcrc; for (int i = 0; i < len; i++) { bytC = b[i + offset];

展開全部如果是模2的冪的話,你完全可以用位運算代替,比如判斷奇偶可以直接用a&1*展開全部他和除法效率差不多,一些特別的辦法可以提高效率,就是利用計算機的位運算*展開全部不低。*www.odisxu.buzz*?*?

聲明:本網內容旨在傳播知識僅供參考,不代表本網贊同其觀點,文字及圖片版權歸原網站所有。

后效
你可能還關注
熱門推薦
今日推薦 更多
2019四肖免费期期准一 (*^▽^*)MG之书Oz免费试玩 河内5分彩是哪里开的 (★^O^★)MG极速抢钱_电子游戏 (^ω^)MG招财进宝游戏规则 内蒙古快三开奖示意图 2018公式平特肖 (-^O^-)MG地府烈焰官网 (★^O^★)MG真爱在线客服 吉林快3形态走势图今天 (^ω^)MG太阳神之忒伊亚免费下载 (^ω^)MG K歌乐韵_最新版 香港六合彩报码室 河北好运彩3 河北快三走势图表走势图分布图 趣多吧娱乐城 一尾中特期期准百度