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

16-битные числа - C++

Восстановить пароль Регистрация
 
Sasha 93
2 / 2 / 0
Регистрация: 28.11.2012
Сообщений: 39
07.10.2013, 20:26     16-битные числа #1
Данные два 16-битных числа A (aa. .. a) и B (bb. .. b), случайным образом выбирается точка разрыва t и получаем 2 числа (С1 и С2):
для первого числа биты от 0 до t берем из числа A, а другие с B;
для второго числа биты от 0 до t берем из числа В, а другие с А;
То есть, как в этом примере (для t = 5):
0 t 16 0 t 16
С1 = aaaaabbbbbbbbbbb и С2 = bbbbbaaaaaaaaaaa
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
NanoBreaker
 Аватар для NanoBreaker
23 / 23 / 7
Регистрация: 11.07.2013
Сообщений: 82
07.10.2013, 20:51     16-битные числа #2
Для решения этой задачи используй библиотеку #include <bitset>
Как раз предназначена для работы с битами.

К примеру.

bitset<16> number; // Число из 16 битов, все нули.

Работать с number можно как с самым обычным массивом.
Sasha 93
2 / 2 / 0
Регистрация: 28.11.2012
Сообщений: 39
07.10.2013, 21:01  [ТС]     16-битные числа #3
Цитата Сообщение от NanoBreaker Посмотреть сообщение
bitset<16> number; // Число из 16 битов, все нули.
Тоисть если
C++
1
bitset<16> а
то я получу при виводе рядок из шестнадцати символов "а"?
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
07.10.2013, 21:04     16-битные числа #4
а что операции & и | отменили?)
justDo
 Аватар для justDo
8 / 8 / 2
Регистрация: 06.10.2013
Сообщений: 19
07.10.2013, 21:10     16-битные числа #5
Sasha 93,
Надеюсь, суть понятна будет
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <bitset>
 
int main()
{
    std::bitset<16> a[5] = {0, 1, 12, 5, 2};
    std::cout << a[3] << '\n';
 
    system("pause >> break");
    return 0;
}
 
// результат:
// 0000000000000101
NanoBreaker
 Аватар для NanoBreaker
23 / 23 / 7
Регистрация: 11.07.2013
Сообщений: 82
07.10.2013, 21:21     16-битные числа #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
#include <iostream>
#include <bitset>
#include <conio.h>
 
using namespace std;
 
int main()
{
    __int16 A = 0;
    __int16 B = 0;
    bitset<16> A_bs;
    bitset<16> B_bs;
    bitset<16> C1;
    bitset<16> C2;
    short int t = 0;
 
    cout << "Input A: "; cin >> A; A_bs = A;
    cout << "Input B: "; cin >> B; B_bs = B;
    cout << "Input t: "; cin >> t;
 
    for(int i = 0; i < 16; i++)
    {
        if(i < t){
            C1[i] = A_bs[i];
            C2[i] = B_bs[i];
        }else{
            C1[i] = B_bs[i];
            C2[i] = A_bs[i];
        }
    }
 
    for(int i = 0; i < 16; i++) cout << C1[i];
    cout << endl;
    for(int i = 0; i < 16; i++) cout << C2[i];
 
    getch();
    return 0;
}
Биты выводятся в обратном порядке, но я думаю с этим ты и сам разберешься.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.10.2013, 13:05     16-битные числа
Еще ссылки по теме:

64-х и 32-х битные системы C++
Битные маски C++
64 битные типы данных в devC++ C++

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

Или воспользуйтесь поиском по форуму:
Qwertiy
817 / 625 / 75
Регистрация: 20.08.2013
Сообщений: 2,525
08.10.2013, 13:05     16-битные числа #7
Цитата Сообщение от NanoBreaker Посмотреть сообщение
bitset<16> number; // Число из 16 битов, все нули.
Ну что за извращение? Всё же просто:
C++
1
unsigned short number = 0;
Yandex
Объявления
08.10.2013, 13:05     16-битные числа
Ответ Создать тему
Опции темы

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