Упаковка двух символов в short int - C (СИ)
Формулировка задачи:
Всем привет. Написал такую программу:
Вывод :
Enter first character: a
Enter second character: b
Result is b
Result in binary notation is
0110 0001 0110 0010
Press any key to continue . . .
Подскажите пожалуйста, как можно заставить её выводить сразу два символа, не используя двоичное представление переменной?
#include<stdio.h>
#include<stdlib.h>
void packCharacters(char, char);
void printBit(int);
main()
{
char char1, char2;
printf("Enter first character: ");
scanf("%c", &char1);
fflush(stdin);
printf("Enter second character: ");
scanf("%c", &char2);
packCharacters(char1, char2);
system("pause");
}
void packCharacters(char char1, char char2)
{
unsigned short int result;
result = char1;
printBit(result);
result <<= 8;
printBit(result);
result |= char2;
printf("Result is %c\n", result);
printf("Result in binary notation is\n");
printBit(result);
putchar('\n');
}
void printBit(int num)
{
int i, mask = 1 << 15;
for(i = 1; i <= 16; i++)
{
putchar(num & mask ? '1' : '0');
num <<= 1;
if(i % 4 == 0)
putchar(' ');
}
putchar('\n');
}Решение задачи: «Упаковка двух символов в short int»
textual
Листинг программы
c1 = num/256; c2 = num - 256*с1;
Объяснение кода листинга программы
num- значение переменной, которое будет разделено на 256 и использовано для вычисления значения переменнойc1c1- переменная, которая будет содержать результат деленияnumна 256c2- переменная, которая будет содержать результат вычитания 256 умноженного наc1изnum- 256 - коэффициент, на который будет умножено значение переменной
c1перед тем как результат будет вычтен изnum - Результат вычисления
c2будет содержать два символа, упакованных в short int тип данных