Math Is Fun Forum
  Discussion about math, puzzles, games and fun.   Useful symbols: √ ∞ ≠ ≤ ≥ ≈ ⇒ ∈ Δ θ ∴ ∑ ∫ π -

Login

Username

Password

Not registered yet?

Post a reply

Go back

Write your message and submit
:) :| :( :D :o ;) :/ :P :lol: :mad: :rolleyes: :cool: | :dizzy :eek :kiss :roflol :rolleyes :shame :down :up :touched :sleep :wave :swear :tongue :what :faint :dunno
Options

Go back

Topic review (newest first)

luca-deltodesco
2008-01-21 05:11:28

you're right about the complement part, its what i said above when i went on two 10's complement with decimal.

its two's complement because you take the power of 2 that is 1 above the range of the bits. and then subtract the number from it for its two's complement, which due to overflows is the same as inverting every bit and adding 1

mikau
2008-01-18 12:31:59

Wow! look at the response this threads getting! smile

Ricky wrote:

After a great amount of confusion i've hypothesized that they use the regular binary system to store positive values, and two's complement numbers for negative values.

Two's complement is "regular binary" for positive values.  I'm not certain if that's what you were trying to say.

by 'regular binary' i meant place value, as in 1010 = 1*2^3 + 0*2^2 + 1*2^1 + 0*^0 = 12d

What i really think my book is doing is using the ordinary binary system for positive numbers (as in, 1010 = 12d) and using two's complement for negative numbers. I was actually able to prove that there is no overlap so there is no ambiguity between the two.

we are using an online text for this course, and its accesible from anywhere:
http://webster.cs.ucr.edu/AoA/DOS/pdf/0_AoAPDF.html

if you click on chapter 1 and go to the pages 13 of the pdf (not of the actual page numbers) you can find the part on signed numbers and on the next page they do positive to negative conversions.

The reason i think they're using 'place value binary' for positive numbers and 'two's complement' for negatives is because supposedly, you can calculate a numbers negative by using NOT and adding 1. They begin with 5 written as 0101 and then write -5 as 1011. 1011 = 11d which by my understanding, is how we write positive 5 in two's complement form.

also, that pdf never actually told me what two's complement meant and i'm currently under the impression that if x is the value you want to represent (who's binary form has n bits) then
x + complement = 2^n
and we write x in two's complement form by writing 'complement' in binary form.


Thats my understanding of the subject. Care to point out where i'm going wrong, if anywhere?

Ricky
2008-01-18 05:14:22

There is one more thing (two, perhaps).  The other way to do negative numbers is to just have a sign bit, and the rest be interpreted as a normal positive value.  Where else does 2's complement succeed when this method fails.

luca-deltodesco
2008-01-18 02:22:36

also note that this doesn't just work for binary numbers. if we define the negative integer as k-x where k is the number 1 followed by 'n' 0's where n is how many bits the number is. i.e. -0101 = 10000-0101 = 1011.

then lets do it in decimal.

-0485 = 10000-0485 = 9515.
0785+9515 = (1)0300 = 300. the correct result for 785-485.

pi man
2008-01-18 02:10:40

It simplifies adding a positive number to a negative number.

-4          1100         
+5          0101
==         ====
  1         10001


-5          1011
+4          0100
==        ====
-1          1111

If there are 5 digits (in these examples) in the answer, the leftmost digit is ignored.

luca-deltodesco
2008-01-18 02:08:15

we use this system because we can use the exact same set of logic gates to add two normal binary integers, as we can to add two two's comlement binary integers. without any overhead such as 'if first bit is 1, then do this instead because it is negative' it can simply be treat as any other positive integer, and due to overflow's ends up giving the correct answer

example: 4 bit signed integers:

6 = 0110. -6 = !6+1 = 1001+1 = 1010

now if we add them together we get

0110+1010 = (1)0000. since the 1 is lost in overflow we get 0. the correct result

another example:

5 = 0100. -7 = 1001

add them together you get 1101 which is -2. the correct result.

Ricky
2008-01-18 00:23:34

After a great amount of confusion i've hypothesized that they use the regular binary system to store positive values, and two's complement numbers for negative values.

Two's complement is "regular binary" for positive values.  I'm not certain if that's what you were trying to say.

In two's complement and ignoring the first bit, the lowest number is always represented by 000....1, and the highest number is represented by 11111...1.  This is true for positive and negative numbers.

01111111...1 is the highest positive value.  0111 is 7.
11111111...1 is the highest negative value.  1111 is -1.

00000000...1 is the lowest positive value.  0001 is 1.
10000000...0 is the lowest negative value.  1000 is -8.

From there, you just interpolate.  For each bit you add on to (1/0)00000, simply add 1 to the number.  This means:

0001 = 1
0010 = 2
0011 = 3

While:

1000 = -8
1001 = -7
1010 = -6

And so on.  Now the real question is why do we use this system?

treehugger96
2008-01-17 18:54:08

i'm not sure but i think -3(101)

pi man
2008-01-17 16:44:18

The first bit (leftmost) is the sign bit and is not used in computing the value of the number.   Zero signifies a positive number, a one signifies a negative.   So with 4 bits, you can represent from 7 (0111) to -8 (1000).

mikau
2008-01-17 16:11:39

oops! I'm sorry. I thought i was posting this in coders corner! my bad! sad

mikau
2008-01-17 16:07:25

i'm taking a course in assembly language x_x

I'm reading about how a given computer system stores negative numbers, and they are not being very clear. After a great amount of confusion i've hypothesized that they use the regular binary system to store positive values, and two's complement numbers for negative values.

Supposedly, you can take the negative of a number by using NOT and adding 1

take 3

0011

NOT

1100

add 1

1101 this represents -3?

but that gives us 13, which if i'm not mistaken is the complement of 3, not -3.

is this correct? we store negative values by storing their absolute value in two's complement form?

Board footer

Powered by FluxBB