2's complement is used to indicate a negative number in binary representation.
In normal arithmetic, negative 2 is indicated by unary minus operator, so -2.
In binary it's not the case since there is no convenient way of "registering" the unary operator as a bit. So the notion of a complement came up.
Now a byte (the
Java primitive) ranges from -128 to 127. If we list these values down we have something like
The values on the right column are of course the binary representations of the values in the left column. (I left a break between the binary because staring at a binary like 00101010 for long makes my eyes cross

)
Anyway, representation in a byte is "halved". One half can represent 0 and positive integers up to 127 while the rest is given over to negative integers. Furthermore, each positive integer (and 0) is given a complement. This term makes sense if you consider that the binary representation of this complement is the "reverse" of the binary representation of the original number.
For example, the complement of 0 is -1. The binary representation of 0 is 0000 0000 while -1 is 1111 1111. Reversed, see?
So the complement of 1 is -2 since 1 is 0000 0001 while -2 is 1111 1110, etc.
To generalize, the complement of x is -(x+1).
Finally, since this will come up, note that the largest positive value a byte can hold is 127 and its representation is 0111 1111. It follows that any binary representation starting with 1 is a negative number. This leftmost bit is called the significant bit, because it tells us if this number is + or -.
So at a glance, 1101 0101 is a negative number. It's complement is 0010 1010 which is just 1 x 32 + 1 x 8 + 1 x 2 = 42 so 1101 0101 must be -43.