2013-10-22 48 views
-2

在Go中,我找到了這樣的算法,但我不明白,任何人都可以爲我解釋它,謝謝!給定網絡掩碼,計算可用主機的數量?

func networkSize(mask net.IPMask) int32 { 
    m := net.IPv4Mask(0, 0, 0, 0) 
    for i := 0; i < net.IPv4len; i++ { 
     m[i] = ^mask[i] 
    } 

    return int32(binary.BigEndian.Uint32(m)) + 1 
} 

回答

1

將網絡掩碼中的每一位取反,將結果視爲一個雙生子32位整數的4個字節,並將結果加1。所以255.255.252.0 => 00000000.00000000.00000011.11111111 => 1023,對此加1就是1024.