Hello, I am writing a program that does Multiplication using Bitwise Operation. I can get the following code to compile but keep on getting 229344 for an answer. Also if I just run the "times" function as a stand alone app. , I will get correct output except when I have to negative numbers to compute. Any suggestions on what I might be doing wrong ? Thank you .
Code:
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>
int times (int a, int b)
{
int result;
result=0;
while(b != 0) // Iterate the loop till b==0
{
if (b&01) // Logical ANDing of the value of b with 01
result=result+a; // Update the result with the new value of a.
a<<=1; // Left shifting the value contained in 'a' by 1.
b>>=1; // Right shifting the value contained in 'b' by 1.
}
return result;
}
const int TEXT_SIZE = 100;
int main ()
{
printf("Hello, I'm a program that multplies integers. \n");
do {
int a;
int b;
char text[TEXT_SIZE];
printf("Please enter the first integer or 'Q' to quit: ");
fgets(text,TEXT_SIZE,stdin);
if ( toupper(text[0])== 'Q')
break;
a = atoi(text);
printf ("Please enter the second intger or 'Q' to quit: ");
fgets(text,TEXT_SIZE,stdin);
if ( toupper(text[0])== 'Q')
break;
b = atoi(text);
printf("The product for %d and %d is %d.\n\n", a,b,times(a,b));
}
while (1);
return(EXIT_SUCCESS);
getch();
}