2019年6月28日 星期五

魔術數字 0xED3A65B4CB4B34E9

Hamming (72,64) 演算法中,目前知道 extra parity 8 有 2 種算法:
1. XORing all data bits.
2. step1 plus XORing parity 1 ~ parity 7.

我之前用的都是 1 的作法,知道 2 的作法後,終於解答了 0xED3A65B4CB4B34E9 這個魔術數字的算法,Rust 的 sample code 如下:

fn main() {
    let p1: u64 = 0xDAB5556A_AAAAAAD5;
    let p2: u64 = 0xB66CCCD9_999999B3;
    let p3: u64 = 0x71E3C3C7_8787878F;
    let p4: u64 = 0x0FE03FC0_7F807F80;
    let p5: u64 = 0x001FFFC0_007FFF80;
    let p6: u64 = 0x0000003F_FFFFFF80;
    let p7: u64 = 0x00000000_0000007F;
    let p8: u64 = 0xFFFFFFFF_FFFFFFFF;

    let another_p8 = p1 ^ p2 ^ p3 ^ p4 ^ p5 ^ p6 ^ p7 ^ p8;

    println!("0x{:X}", another_p8);
}


沒有留言:

張貼留言