2013-01-12 27 views
5

Tôi không biết cách dịch từ C++ sang Java. Đây là một hàm tính toán trọng lượng Hamming.Computing Hamming weight, còn được gọi là popcount trong Java?

/** This is popcount_3() from: 
* http://en.wikipedia.org/wiki/Hamming_weight */ 
unsigned int popcnt32(uint32_t n) const 
{ 
    n -= ((n >> 1) & 0x55555555); 
    n = (n & 0x33333333) + ((n >> 2) & 0x33333333); 
    return (((n + (n >> 4))& 0xF0F0F0F)* 0x1010101) >> 24; 
} 

Cụ thể hơn, tôi không biết những gì để sử dụng thay vì uint32_t, và nếu tôi sử dụng loại rằng bất cứ điều gì, tôi có thể chỉ để lại phần còn lại đang thay đổi?

Cảm ơn

+2

Bạn đã thử nó? –

+0

Đối với một, không có tương đương 'uint32_t' trong Java, bạn phải sử dụng' long'. – fge

+0

Oli tốt Tôi không chắc chắn những gì để thử thực sự. Có vẻ như rất nhiều thứ có thể sai. – user1796942

Trả lời

18

Nó thực hiện cho bạn trong Integer.bitCount(int i)