您好,登錄后才能下訂單哦!
ZigZag編碼是什么?可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
在網絡傳輸和數據存儲場景中,需要對數據進行壓縮。數據壓縮的算法非常多,但大部分的數據壓縮算法的原理是通過某種編碼方式不存儲數據中的0比特位,因此0比特位越多,數據壓縮的效果越好。ZigZag編碼就是一種增加0比例位的編碼方式。
假設數據類型為byte的正數11,其二進制表示為:00001011
數據左移一位:00010110
符號位(正數的符號為0)放到最后一位:00010110
假設數據類型為byte的負數-11,其二進制在計算機中是用補碼表示的,計算過程如下。
正數原碼:00001011
。
反碼:11110100
補碼(反碼加1):11110101
處理過程:
左移一位:11101010
符號位放到最后一位:11101011
除最后一位外全部取反:00010101
正數經過處理后,前導0和后置0的個數不變。但是負數經過處理后,增加了三個前導0,可以用于壓縮。
結合兩種情況得出byte類型數據的編碼公式:
ZigZag(n) = n>>7 ^ n<<1
-11的處理過程如下:
11110101 >> 7 = 11111111
11110101 << 1 = 11101010
11111111^11101010 = 00010101
ZigZag的逆函數:
ZigZag?1(n)ZigZag?1(n)=(n>>>1)^ -(n&1)
負數00010101
的解碼過程:
n>>>1:00001010
n&1:00000001
-(n&1):11111111
1111111^0000101=11110101
看完上述內容,你們對ZigZag編碼有進一步的了解嗎?如果還想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。