Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Двоичная обработка данных - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Регулировка скорости http://www.cyberforum.ru/cpp-beginners/thread1490709.html
Надо составить прогу, которая позволяет текст, содержащийся в файле, воспроизвести сигналами азбуки Морзе. При этом текст должен посимвольно выводиться на экран. Предусмотреть возможность плавной...
C++ Найти разницу между минимальным и максимальным из набора чисел Дано 20 вещественных чисел. Найти разницу между минимальным и максимальным из них. http://www.cyberforum.ru/cpp-beginners/thread1490704.html
C++ Копировать несколько символов из одной строки в другую
Нужна функция которая копирует символы из переменной в переменную начиная например от 5 символа и заканчивая 9
Выводятся на печать смайлики вместо элементов строки C++
#include <stdio.h> #define MAXLINE 1000 int getline(char line, int maxline); void copy(char to, char from); /* печать самой длинной строки */ main() {
C++ Игра "Однорукий бандит". Кольцевая очередь. Двусвязный список http://www.cyberforum.ru/cpp-beginners/thread1490692.html
Здраствуйте. Задание: "Создать игру "Однорукий бандит". При нажатии кнопки Enter происходит "вращение" трех барабанов (количество вращений каждого из них выбирается случайно), на которых...
C++ _kbhit() как удалить символ, когда нажимаем клавишу? #include <iostream> #include <conio.h> using namespace std; void main() { char point = '*'; do { if (_kbhit()) { подробнее

Показать сообщение отдельно
TonyHopkiens
0 / 0 / 0
Регистрация: 26.05.2014
Сообщений: 4

Двоичная обработка данных - C++

30.06.2015, 19:53. Просмотров 238. Ответов 7
Метки (Все метки)

Есть такая программа по двоичной обработке массива. Я не совсем понимаю, как здесь менять биты местами, к примеру наложением маски (0х00х0хххххххххх) поменять местами 1 и 3 бит с 4 и 6 битами соответственно. Можно даже на примере одного числа, не массива.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# include <stdio.h> 
# include <string.h> 
# include <stdlib.h>
void tobit(int);
  char s[17]={"0000000000000000"};   int b,a1;
main ()
{
 int a[5]={1528,5184,10822,3555,1234},*sum=NULL;   unsigned char j;
  sum=(int*) malloc (2);//выделяем два байта памяти
  if (!sum)
    {printf("no memory");
     exit(0);
    }
  printf("исходный массив \n");
    for (j=0;j<5;j++)
     { printf("%u   ",a[j]);
      *sum=*sum+a[j]; } 
printf("сумма %d\n",*sum);
sum=NULL;
printf("обработка \n");
  for (j=0;j<5;j++)   { a1=a[j];  tobit(a[j]);
  
a1=a[j]&19455;
  b=a[j]>>15;
  b=b<<12;
  
a1=a1|b;
  b=a[j]>>12;
  b=b<<15;
  
a1=a1|b;
  b=a[j]&8192;
  b=b>>3;
  
a1=a1|b;
  b=a[j]&1024;
  b=b<<3;
  
a1=a1|b;
  *sum=*sum+a1;
  tobit(a1);
  } printf("новая сумма %d\n",*sum);
  scanf("d");
  *sum=NULL;
}
void tobit(int a)
{ char i;
  printf("%d  ",a);
  for (i=0;i<16;i++)
   { b=a1&32768;
     if (!b) s[i]='0';
      else s[i]='1';
     a1=a1<<1;
   }
  puts(s);
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru