I know there are already threads that talk about Excess notation - but they don't really clarify anything for me... What is Excess notation exactly (at a machine level)? And why, and how, would we ever use it?
Here is the page from my textbook that is supposed to explain it: Excess System page from Foundations of Computer Science, Forouzan
As I understand it, Excess notation takes N number of bits available in memory, let's say 4: .1.2.3.4.; and then allows you to - magically - store 2^(N-1)-1 bit-units inside of those 4 (N) bits?????? Which makes NO sense, because it physically can't happen. So, if N=4: 2^(4-1)-1 = 7
Which means you can store 7 4-bit units in 4 bits?????? (.1.2.3.4])*7 -> (.1.2.3.4.)? That's physically impossible, right?
But, putting that aside, you can now take the smallest of these 7 4-bit units; which is "0000"; and assign the decimal value "-[2^(N-1)-1]" or "-7" to it... which makes "0001" = decimal -6; "0010" = decimal -5; and so on - because Excess notation is sequential/uniform. Even though these binary values in no way represent the corresponding decimal value.
So I figured maybe it's a kind of encoding where "7" is a fixed value, but that can't be true either because you can shift the range: "0000" doesn't have to be "-[2^(N-1)-1]", you can add or subtract from it to represent whichever number you please and somehow this will make perfect sense in machine operations as a binary representation? You can go from having "0000", "0001", "0010" representing "-7", "-6", "-5" to it representing "0", "1", "2" again. Maybe it uses a combination of binary addition/subtraction and 2's completing, but then how would the machine remember where relative 0 is?
I am obviously very confused by this, and Googling "Excess notation" only brought up one relevant thread: "math.stackexchange.com/how-to-actually-use-excess-n-representation-in-binaries" - which gives examples of the representation, but does not explain how it is possible. I also watched this video a video "Binary 10: Excess notation" where "1000" is the smallest instead of "0000". That did you explain how it is possible either. I attempted to read the Wikipedia page on Excess-3, but it is very cluttered and ambiguous as well.
I'll appreciate any help with this, really. Maybe it's something obvious that I'm just not seeing.
My questions are: 1) How can you store 2^(n-1)-1possible combinations of N bits in a memory space that only has N bits available, to begin with? 2) How can you assign a value to a binary sequence without encoding it? And if it is being encoded how can you just shift it about as you please?