mirror of
https://github.com/nim-lang/Nim.git
synced 2026-01-01 19:02:18 +00:00
21 lines
547 B
Nim
21 lines
547 B
Nim
#
|
|
#
|
|
# Nimrod's Runtime Library
|
|
# (c) Copyright 2006 Andreas Rumpf
|
|
#
|
|
# See the file "copying.txt", included in this
|
|
# distribution, for details about the copyright.
|
|
#
|
|
|
|
|
|
proc population16(a: int): int {.inline.} =
|
|
var x = a
|
|
x = ((x and 0xAAAA) shr 1) + (x and 0x5555)
|
|
x = ((x and 0xCCCC) shr 2) + (x and 0x3333)
|
|
x = ((x and 0xF0F0) shr 4) + (x and 0x0F0F)
|
|
x = ((x and 0xFF00) shr 8) + (x and 0x00FF)
|
|
return x
|
|
|
|
proc countBits(n: int32): int =
|
|
result = population16(n and 0xffff'i32) + population16(n shr 16'i32)
|