I'm writing a program to multiply two 4-bit number using add and shift method in C language. The code is as follows:

#include <stdio.h>
#include <math.h>

int main()
    int d,p=0, y=1010, x=1101, c, i;
        c = x % 10;
        y = y << i;
        d = c*y;
        p = p ^ d;
        x = x / 10;
    return 0;

I'm getting answer as 57570 which is wrong. Where am I going wrong?

5 Years
Discussion Span
Last Post by Tumlee

shifting with 1 means multiplying by 2 in case of integer. shifting adds 0 left / right (depends on you) when the number is in binary. So, you can convert your integer into binary keeping the figure same. not the value. I mean integer 1010 will remain 1010 in binary. And then you can multiply using shifting operator. And it depends on you whwther you will print your result in binary or integer form.


Where am I going wrong?

If you had given your variables descriptive names so you could easily read through what your code is doing, or at least provided comments illuding to your train of thought when writing this program, you likely wouldn't have to ask us this question.

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.