varint 是一種緊湊的表示數字的方法。它用乙個或多個位元組來表示乙個數字,值越小的數字使用越少的位元組數。這能減少用來表示數字的位元組數。比如對於 int32 型別的數字,一般需要 4 個 byte 來表示。但是採用 varint,對於很小的 int32 型別的數字,則可以用 1 個 byte 來表示
varint 中的每個 byte 的最高位 bit 有特殊的含義,如果該位為 1,表示後續的 byte 也是該數字的一部分,如果該位為 0,則結束。其他的 7 個 bit 都用來表示數字。因此小於 128 的數字都可以用乙個 byte 表示。大於 128 的數字,比如 300,會用兩個位元組來表示:1010 1100 0000 0010
由於負數的高位為1,所以採用這種壓縮處理的時候必須負數轉成正數,可以通過以下**實現int to uint的轉換
private
static
intzag(uint ziggedvalue)
private
static
uint
zig(int
value)
數值壓縮儲存方法Varint
varint 是一種緊湊的表示數字的方法。它用乙個或多個位元組來表示乙個數字,值越小的數字使用越少的位元組數。這能減少用來表示數字的位元組數。比如對於 int32 型別的數字,一般需要 4 個 byte 來表示。但是採用 varint,對於很小的 int32 型別的數字,則可以用 1 個 byte ...
矩陣壓縮儲存
在c中矩陣的表示是用二維陣列。那麼首先要搞清楚陣列行列與矩陣行列的對應。在c語言中二維陣列是按行儲存的。即順序儲存每一行。第一行,第二行。最後一行 看一下例子 陣列數量替換成arrs i j 方便說明。int arrs i j test 二維陣列記憶體位置 for i 0 i 3 i 在上例中i表示...
矩陣壓縮儲存
矩陣乘法 原始碼十字鍊錶 const int max size 1000 const int max size of row 100 typedef struct triple typedef struct rltmatrix 三元組順序表 rltmatrix行列交換 重新排序 普通方法 按列查詢 ...