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

Обработка бита - C++

Восстановить пароль Регистрация
 
Filipchik Elena
0 / 0 / 0
Регистрация: 23.03.2010
Сообщений: 14
25.03.2010, 20:32     Обработка бита #1
Название Размерность Тип
N 16 вход
M 4 вх
P 2 вх
O 16 выход

На вход N подается BCD число. Необходимо число стоящее в P-ой позиции BCD числа заменить на данное число M. На выходе О - полученное число.

Примечание:
В BCD-формате числа каждая цифра десятичного числа кодируется 1 полубайтом.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.03.2010, 20:32     Обработка бита
Посмотрите здесь:

Обработка бита C++
Замена бита единицей C++
Копирование бита C++
C++ Извлечь 3 бита числа A, начиная со второго и вставить их в число B, начиная с первого бита
C++ Проверка бита
Компилятор С++ для Windows XP, 32 бита C++
Установка бита C++
Наличие бита в байте C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Зоти Сергей
 Аватар для Зоти Сергей
228 / 226 / 13
Регистрация: 18.12.2009
Сообщений: 316
25.03.2010, 22:41     Обработка бита #2
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
#include <conio.h>
#include <iostream.h>
int main()
{
    int BcdValue;
        int i,j;
        int BcdArray[4];
    cout << "Vvedite BCD chislo (0 - 9999) : ";
        cin>>BcdValue;
        int ValueForChanging;
        int ByteIndex;
        cout<<"Vvedite chislo dlija zameny (0 - 9) :";
        cin>>ValueForChanging;
        cout<<"Vvedite index tetrady dlja zameny (0 - 3) :";
        cin>>ByteIndex;
        BcdArray[0]=BcdValue/1000;
        BcdArray[1]=(BcdValue-BcdArray[0]*1000)/100;
        BcdArray[2]=(BcdValue-BcdArray[0]*1000-BcdArray[1]*100)/10;
        BcdArray[3]=(BcdValue-BcdArray[0]*1000-BcdArray[1]*100-BcdArray[2]*10);
        cout<<"BCD chislo "<<BcdValue<<" v dvoichnom vide:\n";
        for(int i=0;i<4;i++)
        {
            for(j=3;j>=0;j--)
            {
                cout<<((BcdArray[i]>>j)&0x01);
            }
                cout<<" ";
        }
        BcdArray[ByteIndex]=ValueForChanging;
        cout<<"\nBCD Chislo na vihode v dvoichnom vide: \n";
        for(i=0;i<4;i++)
        {
            for(j=3;j>=0;j--)
            {
                cout<<((BcdArray[i]>>j)&0x01);
            }
                cout<<" ";
        }
        cout<<"\nBCD Chislo na vihode v desjatichnom vide: \n";
        for(i=0;i<4;i++)
            cout<<BcdArray[i];
        getch();
    return 0;
}
Единственное, что я не совсем понял:
У вас на входе 16-бит. Это 4 тетрады. Каждая для описания одного десятичного числа от 0 до 9
Какую-то тетраду надо заменить на число М(4 бита или 1 тетрада).
Но в качестве позиции Р вы на входе хотите вводить число до 2. Но ведь у Вас 4 тетрады! По этому, если Р будет меньше 4-ех, то вы сможете изменить лишь 2 тетрады - 8 бит. А у вас их 16
По этому, я сделал так, что Р имеет диапазон 0-3.
Yandex
Объявления
25.03.2010, 22:41     Обработка бита
Ответ Создать тему
Опции темы

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