Two's complement confusion - binary

I have a sign and magnitude representation of 7 (0111). And converting this to two's complement would be (change the 1 to 0 and 0 to 1, then add 1). Which would make:
1000. and then 1001. However in my book and online converters say that it's 0111. So the two's complement is the same for every positive number. Using the method I mentioned however works for the - ones. Why?

Related

Converting 2's complement binary to decimal

I'm having some difficulty understanding how I would go about doing this. I've been given some binary numbers to convert to decimal with the question saying:
Convert the 2's complement numbers below to decimal
#1 : 1001
#2 : 0010
For #1 I know you would just take the 2's complement to find the magnitude because the 1 indicates it's negative. So it would really be 0111 or -7. What I'm having trouble with is if I should do the same process with #2. It's not negative so I don't know if the problem wants me to instead take the 2's comp or if the decimal would just be 2?

-3 + -3 = -2 in two's complement

using 4-bit numbers calculating -3 + -3 in two's complement, my calculation yields -2.
3 in binary is 0011
making both one's complement by flipping all the digits since both are negative
1100 && 1100
adding one to them, since we are using two's complement
1101 + 1101 =
11010
first one is overflow, and are tossed away in two's complement. So are left with 1010, which is minus two in decimal. Can someone explain what is done wrong in this process?
EDIT
My problem seems more specifically how to interpret the result of a two's complement calculation. I treat the result as following:
The result is 1010.
In my world, the first bit is a sign bit, indicating that the number is negative.
The following 0 means there is 0 of -4's
the following 1 means there is 1 of -2's
the following 0 means there is 0 of -1's
therefore, I interpret it like the result is -2
The result is correct, you just interpreted it wrong. When you perform arithmetic on numbers in two's complement, the result is also two's complement. So the conversion from negative to positive is done the same way as the conversion of the original numbers from positive to negative.
Given the 4-bit binary value 1010, first flip the bits for one's complement to get 0101, then add 1 for two's complement to get 0110.
0110 is 6, so 1010 is -6.
first one is overflow
If, as you imply here, you are restricting your storage to a single nybble, then with two's complement, you can represent values in the range -8 to 7.
-2 would then be 0b1110, which is not what you have. -6 is indeed 0b1010, which is the correct sum.

convert negative decimal to binary using 8 bits

(Not sure if I am allow to ask a question like this but will delete if asked)
Convert -25 into binary representation using 8 bits and 2's complement format to represent a negative number. So far I got 11001.
I tried to google methods but I am not sure how to do it using the 8 bits way.
This question is not using code, just conversions but from what I did was
convert it to binary which was 11001 then I added 3 zero's to make it 8bits (assuming that is correct) 00011001 then I did 1's complement 11100110 and 2's complement by adding 1 which equals 11100111.
I am not sure if that is correct.
Two's complement is probably one of the more straightforward operations on binary numbers. In short, you'll want to take the following actions to convert a decimal number into two's complement form:
Write down the binary representation of the positive version of your number. In this case, 25 should be represented as: 00011001
Next, flip all the digits: 11100110
Add one: 11100111
Sit back, grab a drink, and bask in the glory of the newly-created two's complement representation of a decimal number.
Source
1.assume the negative sign and get the binary of the positive integer.adopt 8bit notation
25--00011001
2.get the two's complement.
11100111
+ 1
=11111000
3.relax and enjoy the two's complement

Two's Complement of a number and its negative number difference?

So i was told that two's complement is usually to used to find complement of a number and I used it only to complement positive numbers (i.e positve --> negative conversion) however I just got an example in book which asks me the following :
Express 23, -23, and -9 in 8-bit binary two’s Complement
form
now what does that mean? 23 means -23 in binary and -23 means 23 ?
sorta confused over there
2's complement is used to represent negative numbers, which in turn, can be used to do subtraction.
23 = 00010111b
To get -23 (2's complement of 23), flip all the bits, and add 1:
11101000b + 1
=11101001b (-23)
-9 is the 2's complement of 9. 9 is
00001001b
So -9 is
11110111b (Flipping and add +1)
See also here
The representation of positive numbers in 2's complement is same as the unsigned representation. Things start to change when negative representation comes into play. So, in general, for given w bits, the numbers that can be represented in 2's complement are -2^(w-1)-1 to 2^(w-1) with the w bit being the signed bit. So since you have 8 bits you can represent numbers from -128 to 127. The 8th bit will be the signed bit, with 0 being positive and 1 representing negative.
For any positive representation of a number in binary 2's complement N the negative counterpart -N is pretty simple to find, just invert the bits, and add one. Example:
7 in 2's complement is 0111, inverting these bits gives: 1000, adding one gives 1001, which is -7 in 2's complement! Hope this helps!

2's complement data representation

This is a question which I saw in a past paper. I think I understand 10s complement, but don't understand the following question about two's compliment. Also, what does two's compliment have to do with binary?
What number in base 10 is represented by 1110 in 2s complements with k=4? Would the answer change if k=5?
Please Explain the answer, thanks for any help!
Two's complement is a method to represent negaitve numbers in binary. I don't understand how it works, but it does, there is mathematical foundation behind it.
take for example the number 6. In binary it's 0110. Then to represent -6 you need to apply two's complement algorithm on it.
The algorithm is to copy all the digits from right to left. The first time you encounter 1 you leave it as it is, but from that point on you invert all the digits as you advance left. In this example let's go right to left: First we have 0. Then we have 1. We copy it, so meanwhile we have 10. Since we encountered 1 we now need to invert all the bits. So the next one is 1, we copy it as 0, so we now have 010. The leftmost bit is 0 so we invert it to 1 and so we end up with 1010. This is -6 in 4 digit. Negative numbers in two's complement always have 1 for MSB (the leftmost bit - Most Significant Bit).
Before I continue, there is a short way for the conversion. you simply invert all the bits then add 1, and get the same result. If we invert 0110 we get 1001. Adding 1 gives, again 1010. Don't know how it works but it does.
How much is 8 - 6? It's like 8 + (-6). In two's complement it's 1000 + 1010 = 10010
Since we work with 4 digits, we trim the MSB and get 0010 which is 2, which is 8 - 6. It works.
If you take -6 (1010) and apply the two's complement on it again, you get (using the second method) invert(1010) + 1 = 0101 + 1 = 0110 = 6. So applying two's complement algorithm to negative numbers reveals their absolute value.
And now we can move on to the second part of your question: 1110. In the positive numbers world this is 14. But in the workd of both positive and negative numbers, we see that since the MSB (most signigicant bit) in this number is 1, the number is negative. Like in the -6 example, applying to it two's complement will give it's absolute value. Hence: Invert(1110) + 1 = 0001 + 1 = 0010 = 2. So 1110 is -2.
I beleive that k in the question is number of digits. If k is 5 then how do we represent -2?
To answer that we start with 2 represented in 5 digits, and then apply the two's complement conversion.
2 is 00010. Two's complent on it is invert(00010) + 1 = 11101 + 1 = 11110.
You can conclude that if we had 8 bits then -2 would be 11111110.
This phenomenon is called sign extension. It says that if a negative number can be represented in k bits, then: a) the MSB will be 1, and b) if you want to use more than k bits, then all the bits from the original MSB and left will all be 1.
And again, there is mathematics behind it to prove it, which I'm not familiar with.
By the way, you can look in my website. It happened that your question hits exactly the problem I solve in a product called ChordBits, where you can turn bits on and off, and among other options, you can apply two's complement on them and view what it looks like (the shareware version is fully functional). www.codechords.com
Cheers