teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

別解の追加

2019/06/20 03:03

投稿

kazuma-s
kazuma-s

スコア8222

answer CHANGED
@@ -6,4 +6,7 @@
6
6
 
7
7
  int main(void) { printf("%d\n", lastBitPos(0xebd6fc00)); }
8
8
  ```
9
- 1 がない場合 0 を返します。
9
+ 1 がない場合 0 を返します。
10
+
11
+ [追記]
12
+ log2(x-1 ^ x) は log2(-x & x) でも構いません。

1

コードの修正

2019/06/20 03:03

投稿

kazuma-s
kazuma-s

スコア8222

answer CHANGED
@@ -2,7 +2,7 @@
2
2
  #include <stdio.h>
3
3
  #include <math.h>
4
4
 
5
- int lastBitPos(unsigned x) { return x ? (int)log2(x-1 & x ^ x) + 1 : 0; }
5
+ int lastBitPos(unsigned x) { return x ? (int)log2(x-1 ^ x) + 1 : 0; }
6
6
 
7
7
  int main(void) { printf("%d\n", lastBitPos(0xebd6fc00)); }
8
8
  ```