При вводе символа выдать его двоичный код и код, полученный перестановкой битов в байте - 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;
Объяснение кода листинга программы
Код представлен в виде одного предложения и выполняет следующие действия:
- Присваивает переменной
aзначение, полученное в результате перестановки битов в байте, затем записывает это значение в массивmas_bс индексом, равным 8 минус 1 минус значение переменнойi. Пример: Если значение переменнойiравно 3, то будет выполнено следующее действие: mas_b[8-1-3]=a; В результате, в массивеmas_bс индексом 4 будет храниться значение переменнойa.