binary - Working with bits-output in c -
i have output of program w = 33. not know how it. have idea how solve without writing binary representation of each number?
void notchicken(int w) { unsigned int v1 = 0x12345678; unsigned int v2 = 0x87654785; unsigned int v3 = 0xffffffff; unsigned int tmp; tmp = (v1 >> 3) | (v2 << 3); tmp &= v3 & ~(v3 << (w >> 1)); printf("%8x\n", tmp); } thanks
although not idea, lets try break down operation.
you have given w = 33
the last part -
v3 & ~(v3 << (w >> 1)) going evaluate v3 & ~(v3 << 16)
v3 << 16 0xffff0000 , ~ of 0xffff
since v3 ones 0xffff. mask off upper 16 bits of previous computation.
now (v1 >> 3) | (v2 << 3);
we care lower 16 bits.
>> 3 dividing 8 , << 3 multiplying 8.
so result of first part be
0x2468acf | 0x3b2a3c28 keeping lower 16 bits
0x8acf | 0x3c28 finally don't know how going or without writing bitwise representation. can last hex. f.
Comments
Post a Comment