2013-07-05 2 views
0

T ученик, мой учитель сказал, что коды в порядке .. но она спросила меня, как двоичный вход 00101 становится 5,0 деци. Мне очень нужна помощь. Я не знаю, как объяснить, как 00101 bin становится 5.0 Я пробовал многие вычисления вроде.Bin To Dec code explaination

5 (chararraylength) -3 (индекс) -1 * Math.pow = 4

я не могу получить последний номер, который делает мой 4 в 5.o дес.

char[] charArray = binary.toCharArray(); 
double answer = 0; 
for (double index = 0; index < charArray.length; index++){ 
    if (charArray[(int)index] == '1') { 
    answer = answer + Math.pow(2.0, (charArray.length - index - 1)); 
+0

См [Двоичный number] (http://en.wikipedia.org/wiki/Binary_number#Decimal) – devnull

+0

Я знаю, что нужно конвертировать bin в документ или просто смотреть на него. Мне просто нужно обратиться к моим кодам. –

+0

получить полномочия 2 использовать '1 << n', ** не использовать ** pow' –

ответ

0

используется Math.pow(), который работает на двойников, это поэтому нормально.

Либо печать (int) answer или использовать вместо этого:

final int size = charArray.length; 
char c; 
int answer = 0; 

for (int index = size; index > 0; index++) { 
    if (charArray[index] == '1') 
     answer++; 
    answer <<= 1; 
} 

Также отметим, что индексы являются int s, так что ваша index переменная должна быть внутр.

+0

Мои коды работают, мне просто нужны объяснения, почему 00101 получает 5,0 дека, мой учитель сказал, что мне просто нужно обратиться к мои коды, и я не знаю, почему я сделал такие коды, тогда я не могу объяснить, как 00101 получает 5,0: D –

+0

Это потому, что вы печатаете двойной, вот почему. – fge

0

Я не уверен, если я правильно понимаю ваш вопрос, но здесь расчет программа делает:

00101 означает
0 * 2^4 + 0 * 2^3 + 1 * 2^2 + 0 * 2^1 + 1 * 2^0
= 0 * 16 + 0 * 8 + 1 * 4 + 0 * 2 + 1 * 1 = 5

Подробнее на Wikipedia Binary_number

+0

он должен быть 5digits, как вы можете видеть 00101 имеет 5digits, что charArray.length , поэтому он должен быть 5-0-1^2 .. 5-1-1^2 ... 5-2.1^2 ... 5 -3-1^2 ... 5-4-1^2 .. –

+0

Хорошо, что ваш взгляд начинается с младшего разряда: '1 * 2^0 + 0 * 2^1 + 1 * 2^2 + 0 * 2^3 + 0 * 2^4'. Но это швы, я не понимаю, в чем твоя проблема. – MrSmith42