diff --git a/11_isZero.c b/11_isZero.c index dbc7401..296b00d 100644 --- a/11_isZero.c +++ b/11_isZero.c @@ -20,6 +20,6 @@ int test_isZero(int x) int main(void) { int x = 0; - printf("expected: %x\n", isZero(x)); + printf("expected: %x\n", isZero(x^0)); printf("actual : %x\n", test_isZero(x)); } diff --git a/12_minusOne.c b/12_minusOne.c index b13fbe6..078442c 100644 --- a/12_minusOne.c +++ b/12_minusOne.c @@ -8,7 +8,7 @@ */ int minusOne(void) { - return 2; + return ~0X0; } int test_minusOne(void) diff --git a/13_tmin b/13_tmin new file mode 100755 index 0000000..c6e0a40 Binary files /dev/null and b/13_tmin differ diff --git a/13_tmin.c b/13_tmin.c index f8ce672..cada27d 100644 --- a/13_tmin.c +++ b/13_tmin.c @@ -8,7 +8,7 @@ */ int tmin(void) { - return 2; + return (1<<31); } int test_tmin(void) diff --git a/14_tmax b/14_tmax new file mode 100755 index 0000000..686336f Binary files /dev/null and b/14_tmax differ diff --git a/14_tmax.c b/14_tmax.c index 8e2a1d7..34f84fe 100644 --- a/14_tmax.c +++ b/14_tmax.c @@ -8,7 +8,7 @@ */ int tmax(void) { - return 2; + return ~(1<<31); } int test_tmax(void) diff --git a/15_isTmin b/15_isTmin new file mode 100755 index 0000000..62f2420 Binary files /dev/null and b/15_isTmin differ diff --git a/15_isTmin.c b/15_isTmin.c index b6fadd8..04bb4f4 100644 --- a/15_isTmin.c +++ b/15_isTmin.c @@ -9,7 +9,7 @@ */ int isTmin(int x) { - return 2; + return !(x^(1<<31)); } int test_isTmin(int x) diff --git a/16_isTmax b/16_isTmax new file mode 100755 index 0000000..5dc9665 Binary files /dev/null and b/16_isTmax differ diff --git a/16_isTmax.c b/16_isTmax.c index 63f77dd..ee7aac7 100644 --- a/16_isTmax.c +++ b/16_isTmax.c @@ -9,7 +9,7 @@ */ int isTmax(int x) { - return 2; + return x&&~(1<<31); } int test_isTmax(int x) diff --git a/21_bitMatch b/21_bitMatch new file mode 100755 index 0000000..9dbe8d9 Binary files /dev/null and b/21_bitMatch differ diff --git a/21_bitMatch.c b/21_bitMatch.c index aaea930..e96ff0f 100644 --- a/21_bitMatch.c +++ b/21_bitMatch.c @@ -10,7 +10,7 @@ */ int bitMatch(int x, int y) { - return 2; + return (x&y)|(~x&~y); } int test_bitMatch(int x, int y) diff --git a/22_evenBits b/22_evenBits new file mode 100755 index 0000000..ee696ac Binary files /dev/null and b/22_evenBits differ diff --git a/22_evenBits.c b/22_evenBits.c index cf66a8c..0bb4f24 100644 --- a/22_evenBits.c +++ b/22_evenBits.c @@ -8,7 +8,9 @@ */ int evenBits(void) { - return 2; + int x=0; + x=0x55<<8 | 0x55<<16 | 0x55<<24 | 0x55; + return x; } int test_evenBits(void) diff --git a/23_thirdBits b/23_thirdBits new file mode 100755 index 0000000..b5a11d3 Binary files /dev/null and b/23_thirdBits differ diff --git a/23_thirdBits.c b/23_thirdBits.c index 09d8399..73a7686 100644 --- a/23_thirdBits.c +++ b/23_thirdBits.c @@ -8,9 +8,10 @@ */ int thirdBits(void) { - return 2; + return 0x49<<9 | 0x49<<18 | 0x49<<27 | 0x49 ; } + int test_thirdBits(void) { int result = 0; diff --git a/24_upperBits b/24_upperBits new file mode 100755 index 0000000..0120f71 Binary files /dev/null and b/24_upperBits differ diff --git a/24_upperBits.c b/24_upperBits.c index 36dae61..08c0682 100644 --- a/24_upperBits.c +++ b/24_upperBits.c @@ -10,9 +10,9 @@ */ int upperBits(int n) { - return 2; + return (0x01<<31)>>n-1; } - +// 0000 0000 int test_upperBits(int x) { int result = 0; @@ -24,7 +24,7 @@ int test_upperBits(int x) int main(void) { - int x = 32; - printf("expected: %x\n", upperBits(x)); - printf("actual : %x\n", test_upperBits(x)); + int x = 0; + printf("expected: %x\n", test_upperBits(x)); + printf("actual : %x\n", upperBits(x)); } diff --git a/25_fitsShort b/25_fitsShort new file mode 100755 index 0000000..24ba420 Binary files /dev/null and b/25_fitsShort differ diff --git a/25_fitsShort.c b/25_fitsShort.c index 6576908..aa56230 100644 --- a/25_fitsShort.c +++ b/25_fitsShort.c @@ -10,7 +10,7 @@ */ int fitsShort(int x) { - return 2; + return x<<16; } int test_fitsShort(int x) diff --git a/33_bitNor b/33_bitNor new file mode 100755 index 0000000..8438063 Binary files /dev/null and b/33_bitNor differ diff --git a/33_bitNor.c b/33_bitNor.c index f239f6d..107c013 100644 --- a/33_bitNor.c +++ b/33_bitNor.c @@ -3,13 +3,20 @@ /* * bitNor - ~(x|y) using only ~ and & * Example: bitNor(0x6, 0x5) = 0xFFFFFFF8 + 0110 + 0101 + 1000 + + 1001 + 1010 + 1000 * Legal ops: ~ & * Max ops: 8 * Rating: 1 */ int bitNor(int x, int y) { - return 2; + return (~x&~y); } int test_bitNor(int x, int y) diff --git a/34_bitXor b/34_bitXor new file mode 100755 index 0000000..9c0e09b Binary files /dev/null and b/34_bitXor differ diff --git a/34_bitXor.c b/34_bitXor.c index f89b7ec..21dd7b0 100644 --- a/34_bitXor.c +++ b/34_bitXor.c @@ -7,9 +7,11 @@ * Max ops: 14 * Rating: 1 */ + + int bitXor(int x, int y) { - return 2; + return (~x&y); } int test_bitXor(int x, int y) diff --git a/out b/out new file mode 100755 index 0000000..7f4ebbc Binary files /dev/null and b/out differ