**How computers store negative numbers (using -11 as a case study):**
The computer is able to process data and performs tasks based on a set of instructions called a program . A program is a set of instructions written in a language that the computer understands and executes in order to solve an exact problem , computer programming can further more be defined as solving problems.
Just like humans speak and understands different dialects mostly depending on what part of the world we’re from , the computer also has a language it understands , this language is known as binary or machine language ( 0 & 1s) . The computer has other programming languages which differ transcending the five generations of computers and have evolved consecutively with technology overtime . They all individually brought major changes in hardware , software and how data ( negative numbers inclusive ) can be stored and processed .
Programming languages a divided into two ; namely high and low level languages , we humans are more familiar with the high level languages while the computer is more inclined to the low level languages but communication became simplified with the help of translators .
Symbolizing positive numbers in binary is straight-forward , on the other hand illustrating negative numbers is a bit more complicated because they can’t be stored directly , hence the use of special binary methods .
Special binary methods :
1* Sign and Magnitude : the leftmost bit ( most significant ) carries the sign .
0 = Positive
1 = Negative
The remaining bits store the number e. g 6 bits
+6 = 000011
-6 = 101011
The problem with this method is that it has two representations for 0 : 0000 and 1000 , this makes the arithmetic challenging.
2* One’s complement : this transposes all bits of the positive number to get the negative version .
e. g 8 bits :
+8 = 00001111
-8 = 11110000
The problem with this method is that it also has two representations for 0 : 0000 and 1111 .
3* Two’s complement ( most commonly used method today ) : this transposes the bits similar to One’s complement , then add 1
e. g 8 bits :
+8 = 00001111
-8 = 11110000 ( transpose)
Add 1 ; 11110001 = -8
It is the most commonly used method today because :
* Only one 0 = 0000
* It makes arithmetic less challenging
* It is supported by all modern CPU’s.
Converting -11 to its 8 bit binary using two’s complement binary representation :
Step 1; from negative it automatically transposes to positive ( similar to one’s law )
so -11 becomes +11
Step 2 ; find the binary of +11 using 8 bits
11 in binary = 00001011
Step 3 ; transpose bits ( one’s complement ) = 11110100
Step 4 ; add 1 to the transposed bits ( to get to two’s complement ) I .e 11110100 + 1 = 11110101
-11 in 8 bit two’s complement binary is 11110101.
Corresponding hexadecimal value :
divide in two
1111 0101
1111 = ( 1 x 23 ) + (1x 2 2) + ( 1 x 21 ) + (1 x 20)
= 8 + 4 + 2 + 1
Answer is 15.
0101 = ( 0 x 2<sup>3</sup> ) + ( 1 x 2<sup>2 </sup>) + ( 0 x 2<sup>1</sup>) + ( 1 x 2<sup>0</sup>)
= 0 + 4 + 0 + 1
Answer is 5.
In Hex 15 = F
Final answer is `0x5F`.