I have read this post on binary multiplication using two complement. but it is not very clear to me. Even I have difficulty understanding the wiki article on this. I want to know how to go about calculating multiplications of negative numbers:
eg: -1 with -7 should give 7.
A 4-bit, 2's complement of -1 is : 1111
A 4-bit, 2's complement of -7 is : 1001
some step-wise way of calculating the multiplication will be helpful. No article I came across talks about division. How to approach this?
Okay, let's see if I can make this simple enough for you.
Two's complement: IFF (If and only if) you have a negative number, first put it into the positive form. For sake of simplicity, all numbers will be 6 bit. The limit of the bits will limit how big your numbers can go. Besides that, what the size is doesn't matter.
Some numbers converted to their positive binary form -7: 000111 16: 010000 -22: 010110 1: 000001
Now for -7 and -23 ONLY we'll do two's complement on. So we flip the bits (1 -> 0 && 0 -> 1) and then add one.
And for 22
Then you just add them together like you would any other number.
And it looks like somebody else already covered the multiplication part, so I won't bother repeating that.
step 1:
sign extend
both integers to twice as many bits. This is safe to do, though may not always be necessary.step 2: do elementary multiplication
sep 3: take the correct number of result bits from the least significant portion of the result.
eg: after multiplication, you end up with something such as
0010011110
take the last 8 bits i.e10011110
Let me illustrate with the example you provided:
-1 X -7
in 4-bit representationyou could get more details here;
for division: convert to positive and after the calculation adjust the sign. I will leave this as exercise but you could refer this page.