Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 23.03.2010
Сообщений: 14
1

Обработка бита

25.03.2010, 20:32. Показов 969. Ответов 1
Метки нет (Все метки)

Название Размерность Тип
N 16 вход
M 4 вх
P 2 вх
O 16 выход

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

Примечание:
В BCD-формате числа каждая цифра десятичного числа кодируется 1 полубайтом.
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.03.2010, 20:32
Ответы с готовыми решениями:

Обработка бита
На входе даны два 8-х разарядных числа IN_0, IN_1. Если на пятом месте в IN_0 стоит 0, то...

Создать 2 переменные, одна из которых хранит 2 старших бита исходного числа, другая 2 младших бита этого числа
Дано число. Создать 2 переменные, одна из которых хранит 2 старших бита исходного числа, другая 2...

Извлечь 3 бита числа A, начиная со второго и вставить их в число B, начиная с первого бита
Ввести целое A. Извлечь 3 бита числа A, начиная со второго и вставить их в число B, начиная с...

Копирование бита
Надо упростить и оптимизировать строку *p=((*p&0x80)>>8)|(*p&0x80);. Задача - скопировать (не...

1
230 / 227 / 65
Регистрация: 18.12.2009
Сообщений: 316
25.03.2010, 22:41 2
Лучший ответ Сообщение было отмечено Filipchik Elena как решение

Решение

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.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.03.2010, 22:41

Установка бита
Дано целое число A и целое число k. Выведите число, которое получается из числа A установкой...

Проверка бита
Всем привет. Хотел спросить знающих людей, как можно проверить бит в байте. То есть, допустим, есть...

Наличие бита в байте
Подскажите, правильна ли реализация проверки наличия бита в байте #define MARK 0x02 .. if...

Замена бита единицей
Как реализовать данное условие? Ввести последовательность из 8 целых чисел. В каждом втором...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.