Перевод из двоичной в десятичную систему счисления - C (СИ) (69780)
Формулировка задачи:
Помогите с переводом из двоичной в восьмеричную систему счисления. Проверку по алфавиту можно отбросить. Интересует вариант разбития на триады. Не могу придумать алгоритм чтобы из строки бралось только 3 символа, а потом последующие 3, ну и если чисел для триады не хватает добавить нулей.
Решение задачи: «Перевод из двоичной в десятичную систему счисления»
textual
Листинг программы
//-----------------------------------------------------------------------
char octal (char ch[255])
{
int n=strlen(ch);
int i=n-1;
do
{
char ch1[]={ch[i-2], ch[i-1], ch[i]};
binary (ch1);
i=i-3;
}
while (i>-1);
}
//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
char binary (char ch[4])
{
int n=strlen(ch), sum=0 , i; //задаем счетчики и измеряем длину строки
for (i=n-1;i>-1;i--)// пошли по строке бит
if (ch[i]=='1') sum+=pow(2,n-(i+2)) ;// если бит = 1 то прибавить к общей сумме 2 в степени
printf("%d",sum); //Вывод
}
//-----------------------------------------------------------------------
Объяснение кода листинга программы
- В функции
octalпроисходит перевод из восьмеричной системы счисления в десятичную. - Функция
binaryпереводит строку из двоичной системы счисления в десятичную. - В функции
octalперебираются все символы строки в обратном порядке, начиная с последнего. - Для каждого символа создается новая строка
ch1, которая содержит три последних символа строкиch. - Функция
binaryвызывается для строкиch1, что приводит к переводу строки из двоичной системы счисления в десятичную. - Значение переменной
sumинициализируется нулем и используется для хранения результата преобразования. - Переменная
iиспользуется в цикле для перебора всех символов строкиch. - Если текущий символ равен '1', то к переменной
sumдобавляется значениеpow(2, n-(i+2)), что соответствует сложению соответствующего числа в двоичной системе счисления. - Значение переменной
nиспользуется для вычисления степени числа 2. - Результат преобразования выводится на экран с помощью функции
printf.