1. Using only bitwise operations: ! ~ & ^ | + << >> and no loops, function calls, or conditional statements count number of bits in a passed integer. Ex, bitCount(5) = 2, bitCount(7) = 3. Maximum operations allowed is 20. 2. Using only bitwise operations: ! ~ & ^ | + << >> and no loops, function calls, or conditional statements find sum of three integers using only on + operator. Ex. sum3(3, 4, 5) = 12. Maximum operations allows is 20. For both puzzles assume that the size of int is 32bits.
answer of first puzzle. int bitCount(unsigned int num) { unsigned int n; n = num - ((num >> 1) & 033333333333) - ((num >> 2) & 011111111111); return ((n + (n >> 3)) & 030707070707) % 63; } You can search on google also.
I need time to process first solution Here is clarification on the second one static int sum(int x, int y) { return x+y; } int sum3(int x, int y, int z) { int word1 = 0; int word2 = 0; /************************************************************** Fill in code below that computes values for word1 and word2 without using any '+' operations ***************************************************************/ /************************************************************** Don't change anything below here ***************************************************************/ return sum(word1,word2);
There are some restrictions: 1. We are not allowed to use unsigned integers 2. You are using '-' (minus) operator (easy to substitute by [~(x) + 1] ) 3. % as you may see is not allowed But thank you for your reply, I will try to see what it does.
sorry there was a typo in the puzzle 2. Using only bitwise operations: ! ~ & ^ | + << >> and no loops, function calls, or conditional statements find sum of three integers using only one + operator. Ex. sum3(3, 4, 5) = 12. Maximum operations allows is 20.
when you write 033333333333 you mean 0x033.33 right and 0x111.11 you mean 0001 0001 ... 0001 in binary. Correct?