[#116016] [Ruby master Bug#20150] Memory leak in grapheme clusters — "peterzhu2118 (Peter Zhu) via ruby-core" <ruby-core@...>
Issue #20150 has been reported by peterzhu2118 (Peter Zhu).
7 messages
2024/01/04
[#116382] [Ruby master Feature#20205] Enable `frozen_string_literal` by default — "byroot (Jean Boussier) via ruby-core" <ruby-core@...>
Issue #20205 has been reported by byroot (Jean Boussier).
77 messages
2024/01/23
[ruby-core:116112] [Ruby master Feature#20163] Introduce #bit_count method on Integer
From:
"byroot (Jean Boussier) via ruby-core" <ruby-core@...>
Date:
2024-01-09 10:24:39 UTC
List:
ruby-core #116112
Issue #20163 has been updated by byroot (Jean Boussier).
I also think `popcount` makes sense. Yes it's a bit of a cryptic name, but if you are dealing with bits, you are likely to be familiar with that name.
----------------------------------------
Feature #20163: Introduce #bit_count method on Integer
https://bugs.ruby-lang.org/issues/20163#change-106107
* Author: garrison (Garrison Jensen)
* Status: Open
* Priority: Normal
----------------------------------------
This feature request is to implement a method called #bit_count on Integer that returns the number of ones in the binary representation of the absolute value of the integer.
```
n = 19
n.bit_count #=> 3
(-n).bit_count #=> 3
```
This is often useful when you use an integer as a bitmask and want to count how many bits are set.
This would be equivalent to
```
n.to_s(2).count("1")
```
However, this can be outperformed by
```
def bit_count(n)
count = 0
while n > 0
n &= n - 1 # Flip the least significant 1 bit to 0
count += 1
end
count
end
```
I think this would be a useful addition because it would fit alongside the other bit-related methods defined on integer: `#bit_length,` `#allbits?`, `#anybits?`, `#nobits?`. Also, when working with bitmasks, a minor upgrade to performance often results in a significant improvement.
Similar methods from other languages:
https://docs.python.org/3/library/stdtypes.html#int.bit_count
https://doc.rust-lang.org/std/primitive.i32.html#method.count_ones
--
https://bugs.ruby-lang.org/
______________________________________________
ruby-core mailing list -- [email protected]
To unsubscribe send an email to [email protected]
ruby-core info -- https://ml.ruby-lang.org/mailman3/postorius/lists/ruby-core.ml.ruby-lang.org/