when multiplying a binary number by (-1), in other word changing the sign the technique is NOT the number then ADD 1 to it. Why is ADD 1 needed to complete the process?
That''s due to the way that signed numbers are stored. You probably know that unsigned chars are like this:
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1
Signed chars are stored like this:
-128 | 64 | 32 | 16 | 8 | 4 | 2 | 1
Now, if I have 35, (32 + 2 + 1), if I NOT it I get (-128 + 64 + 16 + 8 + 4), but that''s only -36. To get -35, I have to add 1. So that''s why you need to add 1. The process is called the "two''s complement".
But wasn''t there an opcode to do that automatically?
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1
Signed chars are stored like this:
-128 | 64 | 32 | 16 | 8 | 4 | 2 | 1
Now, if I have 35, (32 + 2 + 1), if I NOT it I get (-128 + 64 + 16 + 8 + 4), but that''s only -36. To get -35, I have to add 1. So that''s why you need to add 1. The process is called the "two''s complement".
But wasn''t there an opcode to do that automatically?
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement