diff --git a/chapter_3/Homeworks/3.60.c b/chapter_3/Homeworks/3.60.c index 48f6e70..23f773e 100644 --- a/chapter_3/Homeworks/3.60.c +++ b/chapter_3/Homeworks/3.60.c @@ -4,7 +4,7 @@ * A. x in %rdi, n in %esi, result in %rax, mask in %rdx; * B. 初始值: result = 0, mask = 1; * C. mask != 0; - * D. mask = mask << n; + * D. mask = mask << (n & 0xFF); * E. (mask&x) in %r8, result = result | %r8; */ @@ -12,8 +12,8 @@ long loop(long x, int n) { long result = 0; long mask; - for (mask = 1; mask != 0; mask = mask << n) { + for (mask = 1; mask != 0; mask = mask << (n & 0xFF)) { result |= mask&x; } return result; -} \ No newline at end of file +}