I'm trying to use the bit operation << in my code below. Here is my tinyfp2int function that does bunch of bit operations given a binary formatted unsigned character type.
#include <stdio.h>
#define TMin 0b1<<31
typedef unsigned char tinyfp;
int tinyfp2int(tinyfp x)
{
int sign = (x>>7);
int result = 0;
int exp[4];
int exponent=0;
int temp=0;
//get the exponent
int i=0;
for(i=0;i<4;i++){
exp[3-i] = (x>>(3+i))%2;
exponent += exp[3-i]<<i;
}
exponent -= 7;
//now bitwise operations.
result += (1<<exponent); //ERROR!!!
printf("exponent is %d ,shifting 1 with exponent is %d\n",exponent,1<<exponent); // I put this code in because there was a dummy value was inserted on the line above
if(sign>0)
return -result;
else
return result;
}
And finally, this is my main function.
void main(){
tinyfp2int(0b00011110);
printf("%d\n",(1<<-4));
}
However, if I run this code, the result is
exponent is -4 ,shifting 1 with exponent is 268435456
0
I really don't understand why 1<<-4 operation in the main function works, whileas the 1<<-4 operation in the tinyfp2int function keeps returning a dummy value. I would really appreciate any explanation. Thanks in advance!