ccky said:
A:2^8=256. 2^8-1=255 how I can change the number to binary number?
B.I can't get the direction of n bits
Hope this can be some sort of a tool to help you:
Suppose your have a decimal number X and you want to convert it into the binairy number N made of n bits.
1st of all, in a general fashion:
X=[itex]a_{0}[/itex]*[itex]2^{0}[/itex]+[itex]a_{1}[/itex]*[itex]2^{1}[/itex]+[itex]a_{2}[/itex]*[itex]2^{2}[/itex]...[itex]a_{n-1}[/itex]*[itex]2^{n-1}[/itex]
If n=8, the highest number will be 255, and in binairy it is written as 11111111.
Keep in mind that each "number 1" is the value of a specific [itex]a_{i}[/itex]
And the reading directions of these values are opposite i.e. [itex]a_{0}[/itex] is the first "1" from the right of 11111111, [itex]a_{1}[/itex] is the 2nd one.
For example: 11001001
[itex]a_{0}[/itex] =1
[itex]a_{1}[/itex] =0
[itex]a_{2}[/itex] =0
.
.
.
[itex]a_{7}[/itex] =1
2nd of all:
How did I transform 255 to the number 11111111?
Here's a general method (Bear in mind there are other methods):
Take your n bit number (let's consider 186 to add diversity, and in this case it's 8 bits):
Is 186 >= [itex]2^{7}[/itex]=128? Yes.
thus: [itex]a_{7}[/itex]=1.
Now take 186 and substract [itex]2^{7}[/itex] => 58.
And redo the operation:
Is 58 >= [itex]2^{6}[/itex]=64? No.
thus: [itex]a_{6}[/itex]=0.
Do not substract anything since 58<64
Now go to the 3rd digit.
Is 58 >= [itex]2^{5}[/itex]=32? Yes.
thus [itex]a_{5}[/itex]=1.
58-32=26.
Is 26 >= [itex]2^{4}[/itex]=16? Yes.
thus [itex]a_{4}[/itex]=1.
Is 26-16=10 > [itex]2^{3}[/itex]=8? Yes.
thus [itex]a_{3}[/itex]=1.
Is 10-8 >= [itex]2^{2}[/itex]=4? No.
thus [itex]a_{2}[/itex]=0.
Is 10-8>= [itex]2^{1}[/itex]=2? Yes.
thus [itex]a_{2}[/itex]=1.
Is 2-2 >= [itex]2^{0}[/itex]=1? No.
thus the last digit on the right is 0.
Result: 10111010
Verification: 128+0+32+16+8+0+2+0=186. The operation is correct.
Hope this helps and clearify the idea of binairy to decimal transformation and vice-versa .