From 7a3d074281840bb5b75bb5ed19805609dc3ef84c Mon Sep 17 00:00:00 2001 From: Wu Mianzhi <10215501411@stu.ecnu.edu.cn> Date: Fri, 16 Sep 2022 22:53:01 +0800 Subject: [PATCH] finish quiz7 --- lab2/datalab-handout/bits.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/lab2/datalab-handout/bits.c b/lab2/datalab-handout/bits.c index 42b53b7..8e0427c 100644 --- a/lab2/datalab-handout/bits.c +++ b/lab2/datalab-handout/bits.c @@ -250,7 +250,16 @@ int conditional(int x, int y, int z) { * Rating: 3 */ int isLessOrEqual(int x, int y) { - return 2; + int signx = x >> 31; + int signy = y >> 31; + int isnegpos = signx ^ signy & signx; // 0xFFFFF if signx = 1 sign y = 0 + int sign1 = ~(1 << 31); // 01111111...111 + int absx = x & sign1; + int absy = y & sign1; + int diff = absy + (~absx) + 1; + int signdiff = diff >> 31; + int res = !isnegpos & !signdiff; + return res; } //4 /*