Перевод переменной типа long в символьную строку в двоичном представлении - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток!Можете помочь с заданием

Написать функцию для перевода переменной типа long в символьную строку в двоичном представлении

( ltoab( long num, char s[]) ) Проблема именно в преобразовании строки,есть код который просто переводит в двоич.представ.,а вот чтоб в чистую строку именно с '\0' не пойму пока...
#include <stdio.h>
#include <stdlib.h>
void conv(long a){
char mas[100];
int i=0;
 
    while(a>0){
 
        mas[i]=(a%2)+'0';
        a=a/2;
        i++;
    }
 
i--;
    while(i>=0){
   
        i--;
    }
    printf("%c",mas[i] );
}
 
int main(void){
    long a;
    scanf("%d",&a);
    conv(a);
}

Решение задачи: «Перевод переменной типа long в символьную строку в двоичном представлении»

textual
Листинг программы
#include <stdio.h>
 
const char* ltoab(const long a)
{
  static char binStr[sizeof(a) * 8 + 1];
 
  long temp = a;
 
  int i = sizeof(a) * 8 - 1;  
 
  binStr[sizeof(a) * 8] = '\0';
 
  do
  {
    if ((temp & 1) == 0)
    {
      binStr[i] = '0';
    }
    else
    {
      binStr[i] = '1';
    }
 
    i--;
    temp = temp >> 1;
  }
  while (i >= 0);
 
  return (const char*) binStr;
}
 
int main(void)
{
  long a = -344;
  printf("a = %ld, bin = %s\n", a, ltoab(a));
  return 0;
}

Объяснение кода листинга программы

  1. Переменная a объявлена как long и инициализирована значением -344 в функции main().
  2. Функция ltoab() принимает один аргумент типа const long, который представляет двоичное представление числа, и возвращает указатель на символьную строку, представляющую двоичное представление числа в виде строки.
  3. В функции ltoab() используется статическая переменная типа char с именем binStr, которая инициализируется как массив, достаточно большой для хранения двоичного представления числа a.
  4. Первый символ массива binStr инициализируется как нулевой символ, чтобы обеспечить корректное завершение строки.
  5. Используется цикл do-while, который выполняет следующие действия: 5.1. Используется побитовый оператор & для получения бита числа a в позиции, которая будет обработана. 5.2. Если бит в позиции равен нулю, то в соответствующую позицию в массиве binStr записывается символ '0'. 5.3. Если бит в позиции не равен нулю, то в соответствующую позицию в массиве binStr записывается символ '1'. 5.4. Индекс позиции уменьшается на единицу. 5.5. Число a сдвигается вправо на одну позицию, используя побитовый оператор >>.
  6. Цикл выполняется до тех пор, пока индекс позиции больше или равен нулю.
  7. Функция ltoab() возвращает указатель на массив binStr.
  8. В функции main() вызывается функция ltoab() с аргументом a, и результат выводится на консоль с помощью функции printf().

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.545 из 5
Похожие ответы