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

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

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

Добрый вечер) Помогите, пожалуйста. Есть программа, которая при вводе символа должна выдать его двоичный код и код, полученный перестановкой битов в байте (первый - с последним, второй - предпоследний...) и производит запись в файл. Но при вызове, функция перевода в двоичное немного не работает Помогите найти ошибку Вот код:
#include<stdio.h>
#include<conio.h>
#include<locale.h>
#include<stdlib.h>
#include<math.h>
#define N 10
int dvoich(unsigned int s);
int main()
{
    FILE *tfile;
    char s[N];
    int i=0, mas[8];
    setlocale(LC_ALL, "Russian");
    tfile=fopen("filefor.txt","w");
    if (tfile==NULL)
    { printf("Не удалось открыть файл");
    _getch();
    exit (1); }
    printf("Введите 10 символов: \n");
    scanf("%s", &s);
    for (i=0; i<N; i++)
    { mas[i]=dvoich((unsigned int)s[i]);
        printf("\n%d\n", mas[i]); }
for(i = 0; s[i]; i++)
   { s[i] = ((s[i] >> 7) & 1) | (s[i] << 7) |
           ((s[i] >> 5) & 2) | ((s[i] << 5) & 64) |
           ((s[i] >> 3) & 4) | ((s[i] << 3) & 32) |
           ((s[i] >> 1) & 8) | ((s[i] << 1) & 16);}
printf("\nНовый символ: '%s'\n, binary code: %d\n", s, dvoich((unsigned int) s));
fprintf(tfile,"Finish Number: %d", s);
fclose(tfile);
_getch();
return 0;
}
int dvoich (unsigned int s)
{
    int i, a, b=0, mas_b[8];
    for (i=0; s>0; i++)
    {
        a=s%2;
        s=(s-a)/2;
        mas_b[8-i]=a;
    }
    for(i=0; i<8; i++)
        printf("%d", mas_b[i]);
    _getch();
    return *mas_b;
}

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

textual
Листинг программы
mas_b[8-1-i]=a;

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

Код представлен в виде одного предложения и выполняет следующие действия:

  1. Присваивает переменной a значение, полученное в результате перестановки битов в байте, затем записывает это значение в массив mas_b с индексом, равным 8 минус 1 минус значение переменной i. Пример: Если значение переменной i равно 3, то будет выполнено следующее действие: mas_b[8-1-3]=a; В результате, в массиве mas_b с индексом 4 будет храниться значение переменной a.

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


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

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

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