# Two C bit-operation puzzles.

Discussion in 'C' started by partizan, Feb 18, 2008.

1. ### partizanNew Member

Joined:
Feb 13, 2008
Messages:
5
0
Trophy Points:
0
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.

2. ### imrantechiNew Member

Joined:
Feb 12, 2008
Messages:
116
4
Trophy Points:
0

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.

3. ### imrantechiNew Member

Joined:
Feb 12, 2008
Messages:
116
4
Trophy Points:
0
2nd puzzle i am not getting!!!

else

num1+ num2 + num3

4. ### partizanNew Member

Joined:
Feb 13, 2008
Messages:
5
0
Trophy Points:
0
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);

5. ### partizanNew Member

Joined:
Feb 13, 2008
Messages:
5
0
Trophy Points:
0

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.

6. ### partizanNew Member

Joined:
Feb 13, 2008
Messages:
5
0
Trophy Points:
0
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.

Joined:
Feb 13, 2008
Messages:
5