1 х 2 + 1 х 2 + 1 х 2 + 0 × 2 + 1 х 2 = 1 + 2 х (1 + 2 х (1 + 2 х (0 + 2 х 1)))двоичных чисел в десятичные с помощью Хорнер
Напомним b[0] = 1, b[1] = 1, b[2] = 1,b[3] = 0, b[4] = 1
/* to convert a binary representation to a decimal one*/
int dec, b[5] = {1, 1, 1, 0, 1};
dec = b[4];
for (int i = 3; i >= 0; i--)
{
dec=2 * dec + b[i]; //horner's scheme
}
cout << dec << endl;
Я попытался написать этот код еще раз на языке C, но это не работает правильно:
#include<stdio.h>
int main()
{
int B[5];
int x, s, s1;
for(int i = 1;i <= 5; i++)
{
printf("Enter %d. digit of binary number", i);
scanf("%d", &B[i]);
}
s = B[5]; /*this part for reverse the array*/
B[5] = B[1];
B[1] = s;
s1 = B[4];
B[4] = B[2];
B[2] = s1;
x = B[4];
for (int i = 3; i >= 0; i--)
{
x = 2 * x + B[i];
}
printf("%d", x);
scanf("%d");
}
s = B [5]; B [5] = B [1]; B [1] = s; s1 = B [4]; B [4] = B [2]; B [2] = s1; Я думаю, что там проблема здесь, когда я удаляю эту часть, она работает, но работает для обратного номера. когда я хочу преобразовать этот 11000, он работает на 00011, поэтому я не могу удалить – allstar
. Ваш код не может установить значение для B [0], поэтому вы не можете полагаться на то, что вы думаете, пока не исправите его. – mathematician1975
@allstar Проверьте обновленный ответ - это должно решить вашу проблему сейчас – mathematician1975