From 6e57a492d81b64bac1c2a1092572e1994cd8088a Mon Sep 17 00:00:00 2001 From: reisen <2863896505@qq.com> Date: Sun, 8 Oct 2023 12:55:43 +0800 Subject: [PATCH] Finish isLessOrEqual --- LAB1/bits.c | 9 +++++++-- README.md | 2 ++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/LAB1/bits.c b/LAB1/bits.c index 2500357..8701616 100644 --- a/LAB1/bits.c +++ b/LAB1/bits.c @@ -254,7 +254,9 @@ int isAsciiDigit(int x) { * Rating: 3 */ int conditional(int x, int y, int z) { - return 2; + x = !!(x); + x = ~x+1; + return (x&y)|(~x&z); } /* * isLessOrEqual - if x <= y then return 1, else return 0 @@ -264,7 +266,10 @@ int conditional(int x, int y, int z) { * Rating: 3 */ int isLessOrEqual(int x, int y) { - return 2; + int tmp = ~y+1; + tmp = tmp+x-1; + tmp = tmp >> 31;//如果比y大,则为0,比y小等于,为1 + return !!tmp; } //4 /* diff --git a/README.md b/README.md index 176c0e2..dfd4736 100644 --- a/README.md +++ b/README.md @@ -17,3 +17,5 @@ A CSAPP LAB 3. Finish negate 4. Finish isAsciiDigit + +5. Finish isLessOrEqual