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

Поменять местами 1 и 3 биты с 4 и 6 битами каждого числа. - C++

Восстановить пароль Регистрация
 
lord2012
0 / 0 / 0
Регистрация: 02.03.2012
Сообщений: 12
18.05.2012, 05:52     Поменять местами 1 и 3 биты с 4 и 6 битами каждого числа. #1
Нужно срочно написать программу. Помогите!
Задание:В массиве Х[0..9] чисел типа short обработать каждое число
согласно условиям:Поменять местами 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
#include <iostream>
#include <stdio.h>
#define N 8
#define M 10
int main()
{
     int dec, v,m[N],j,tmp,sum,k,o;
short array[M],x;
for(x=0;x<M;x++)
{   std::cin>>array[x];
}
for(x=0;x<M;x++)
{
sum+=array[x];
k++;
}
o=sum/k;
for(x=0;x<M;x++)
{
//от 0 до 255
     dec=array[x];
     v = 128;
     j=0;
     for(int i = 1; i <= 8; i++)
     {
             if(dec >= v)
             {
                    std::cout << '1'; 
            m[j++]=1;
                    dec -= v;
          
             }
             else{
                 std::cout << '0';
        m[j++]=0;
        }   
             v /= 2; 
//тут m[j] должен переводиться из двоичной в десятичную
     }
tmp=m[0];
m[0]=m[3];
m[3]=tmp;
tmp=m[2];
m[2]=m[5];
m[5]=tmp;
array[x]=m[j++];
}
printf("  \n");
for (j=0;j<N;j++)
printf("%d",m[j]);
 
printf("  \n");
for (j=0;j<N;j++)
printf("%d",m[j]);
}
в ней нужно реализовать перевод числа из двоичной в десятичную. Из десятичной в двоичную я уже написал.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.05.2012, 05:52     Поменять местами 1 и 3 биты с 4 и 6 битами каждого числа.
Посмотрите здесь:

... В четных байтах числа в двоичной системе переместить нулевые биты в старшие биты, а в нечетных байтах – в младшие ... C++
C++ поменять соседние числа местами
C++ У каждого слова введенной строки поменять местами первую и последнюю букву.
Поменять местами цифры числа C++
Ввести матрицу с внешнего файла и поменять местами макс. и мин. элементы каждого столбца матрицы C++
C++ Поменять местами биты двух переменных
Найти произведение наименьших элементов каждого столбца матрицы и поменять местами 1-й и 3-й столбцы C++
Поменять первую и последнюю букву местами для каждого слова C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
cactus09
Чайник
 Аватар для cactus09
69 / 69 / 4
Регистрация: 15.02.2012
Сообщений: 475
18.05.2012, 13:33     Поменять местами 1 и 3 биты с 4 и 6 битами каждого числа. #2
Я немного не понял твоего кода (особенно то, что у тебя вводится) но вот поидее код который будет переводить из бинарного в дистеречную
C++ (Qt)
1
2
3
4
5
...
     int Dec=0;
      for(int i=N;N>=0;i--){
      Dec+=m[i]*(2^i);}
...
Тут как раз в Dec будет витоге переведенное число

Добавлено через 1 час 10 минут
Ссори, в коде допустил кочу ошибок, вообше так
C++ (Qt)
1
2
3
4
5
6
... 
int Dec=0;
  for(int i=0;i<N;i++){cin>>m[i];}
      for(int i=N-1,mn=0;i>=0;i--,mn++){
      Dec+=m[i]* pow(2,double(mn));}
...
и еще надо будет подключить библиотеку
C++ (Qt)
1
#include <math.h>
Yandex
Объявления
18.05.2012, 13:33     Поменять местами 1 и 3 биты с 4 и 6 битами каждого числа.
Ответ Создать тему
Опции темы

Текущее время: 08:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru