瀏覽代碼

Add `bits.log2`

gingerBill 4 年之前
父節點
當前提交
de00c7c9a8
共有 1 個文件被更改,包括 4 次插入0 次删除
  1. 4 0
      core/math/bits/bits.odin

+ 4 - 0
core/math/bits/bits.odin

@@ -37,6 +37,10 @@ overflowing_sub :: intrinsics.overflow_sub
 overflowing_mul :: intrinsics.overflow_mul
 overflowing_mul :: intrinsics.overflow_mul
 
 
 
 
+log2 :: proc(x: $T) -> T where intrinsics.type_is_integer(T), intrinsics.type_is_unsigned(T) {
+	return (8*size_of(T)-1) - count_leading_zeros(x)
+}
+
 rotate_left8 :: proc(x: u8,  k: int) -> u8 {
 rotate_left8 :: proc(x: u8,  k: int) -> u8 {
 	n :: 8
 	n :: 8
 	s := uint(k) & (n-1)
 	s := uint(k) & (n-1)