diff options
| author | Richard Qin <richard.qin.x@gmail.com> | 2026-09-20 22:23:31 +0800 |
|---|---|---|
| committer | Richard Qin <richard.qin.x@gmail.com> | 2026-09-20 22:23:31 +0800 |
| commit | 1a0f57746d185684551358a35bb6d58b6b575810 (patch) | |
| tree | 09d1b6f8bdafb0cdf76d3619370c5dbfc9678931 | |
| parent | b2924a90cf8257c314110919316e767d3c556a3f (diff) | |
| download | datalab2026-1a0f57746d185684551358a35bb6d58b6b575810.tar.gz datalab2026-1a0f57746d185684551358a35bb6d58b6b575810.tar.xz | |
logtwo
| -rw-r--r-- | bits.c | 23 |
1 files changed, 22 insertions, 1 deletions
@@ -67,7 +67,28 @@ int samesign(int x, int y) { * Difficulty: 4 */ int logtwo(int v) { - return 2; + int r = 0; + int s; + + s = (v > 0xFFFF) << 4; + v = v >> s; + r = r | s; + + s = (v > 0xFF) << 3; + v = v >> s; + r = r | s; + + s = (v > 0xF) << 2; + v = v >> s; + r = r | s; + + s = (v > 0x3) << 1; + v = v >> s; + r = r | s; + + r = r | (v >> 1); + + return r; } /* |
