3 / 3 / 0
Регистрация: 10.10.2017
Сообщений: 25
1

бинарный файл содержащий определенную последовательность нулей и единиц

19.08.2019, 14:16. Показов 1065. Ответов 10
Метки нет (Все метки)

как мне создать бинраник длиной скажем 6 бит, содержащий соответственно шесть рандомных бит?
например 011001.
Везде где что находил, там запись побайтово. Записываются определенные типы данных. А как можно создать бинарник напрямую так сказать вручную вводя нули и единицы?
0

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

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.08.2019, 14:16
Ответы с готовыми решениями:

Записать в текстовый файл последовательность из n нулей и единиц, сгенерированных рандомайзером
Нужно сгенерировать случайную последовательность из нулей и единиц и записать их в файл. Если...

Составить последовательность из нулей и единиц без соседних единиц
помогите пожалуйста! проблема на экзамене составить последовательность из нулей и единиц без...

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

Дана последовательность из P нулей и единиц. Определить в каких позициях начинаются цепочки нулей
Здравствуйте форумчане, у меня сложились трудности с решением одной задачки, и я даже незнаю как к...

10
Модератор
Эксперт С++
10906 / 9014 / 5419
Регистрация: 18.12.2011
Сообщений: 24,097
19.08.2019, 15:50 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
union Bin
{
    unsigned char x;
    struct
    {
        char c1 : 1;
        char c2 : 1;
        char c3 : 1;
        char c4 : 1;
        char c5 : 1;
        char c6 : 1;
        char c7 : 1;
        char c8 : 1;
    };
};
int main()
{
    Bin s;
    s.c1 = 1;
    s.c2 = 0;
    s.c3 = 0;
    s.c4 = 1;
    s.c5 = 1;
    s.c6 = 0;
    s.c7 = 0;
    s.c8 = 0;
    cout << hex<<(int)s.x<<endl;
    return 0;
}
Здесь c1 будет младшим битом переменной x, ...., c8 - старшим битом.

К сожалению, для битовых элементов нет перегруженных операций operator>> и operator<<.
Придется написать что-то типа
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
#include <iostream>
#include <iomanip>
using namespace std;
 
union Bin
{
    unsigned char x;
    struct
    {
        char c1 : 1;
        char c2 : 1;
        char c3 : 1;
        char c4 : 1;
        char c5 : 1;
        char c6 : 1;
        char c7 : 1;
        char c8 : 1;
    };
    friend istream& operator>>(istream& is, Bin& bb)
    {
        int t;
 
        is >> t;
        bb.c1 = t;
        is >> t;
        bb.c2 = t;
        is >> t;
        bb.c3 = t;
        is >> t;
        bb.c4 = t;
        is >> t;
        bb.c5 = t;
        is >> t;
        bb.c6 = t;
        is >> t;
        bb.c7 = t;
        is >> t;
        bb.c8 = t;
        return is;
    }
};
int main()
{
    Bin s;
    cin>>s;
    cout << hex<<(int)s.x<<endl;
    return 0;
}
0
Эксперт С++
1596 / 928 / 777
Регистрация: 06.02.2016
Сообщений: 2,412
Записей в блоге: 29
19.08.2019, 19:39 3
C++
1
2
3
4
5
6
7
8
9
#include <iostream>
#include <bitset>
 
int main()
{
   std::string bitSeq{"00011001"};
   std::bitset<8> bin(bitSeq);
   std::cout << std::hex << bin.to_ulong(); 
}
0
Эксперт C
25992 / 16199 / 3476
Регистрация: 24.12.2010
Сообщений: 35,450
19.08.2019, 22:11 4
C++
1
2
3
4
5
char rc=0;
for(int i = 0; i<6; i++) {
  char b = rand()%2;
  rc |= (b<<j);
)
Добавлено через 5 минут
Тут есть одно проблемка связанная самим рандомом (функцией rand()). Дело в том, что последние биты выдаваемые реализациями этой функции как правило не вполне случайны. Но это недостаток можно легко устранить как-то так
C++
1
2
int k = rand()%100;
char b = k/50;
0
Продавец времени
5622 / 3081 / 712
Регистрация: 12.03.2015
Сообщений: 14,850
19.08.2019, 22:12 5
Создать файл размером в 6 бит нельзя.
0
Эксперт C
25992 / 16199 / 3476
Регистрация: 24.12.2010
Сообщений: 35,450
19.08.2019, 22:19 6
Я имел в виду, конечно, не бинарный файл, а просто последовательность из 6-ти случайных бит, помещенную в младшие разряды байта.
Если их нужно поместить куда-то еще, скажите куда.
Если нужно не 6, а произвольное число - это тоже не сложно.
0
3 / 3 / 0
Регистрация: 10.10.2017
Сообщений: 25
20.08.2019, 10:29  [ТС] 7
да у меня был вопрос в принципе про то как непосредственно биты помещать в файл. Как их рандомно генерировать - это уже так - для декора топика.
0
Эксперт C
25992 / 16199 / 3476
Регистрация: 24.12.2010
Сообщений: 35,450
20.08.2019, 14:30 8
Цитата Сообщение от zaicev9797 Посмотреть сообщение
непосредственно биты помещать в файл.
Минимальная единица обмена с файлом - байт. Если вы хотите в файле изменить какой-то бит, следует прочесть его содержащий байт в память, там изменить, и записать весь байт снова.
1
Комп_Оратор)
Эксперт по математике/физике
8719 / 4426 / 598
Регистрация: 04.12.2011
Сообщений: 13,262
Записей в блоге: 16
20.08.2019, 16:38 9
Цитата Сообщение от zaicev9797 Посмотреть сообщение
вопрос в принципе про то как непосредственно биты помещать в файл
Долотом или стамеской. А можно упаковать в целые. Или битсетом воспользоваться, оставив реализации потоковое представление:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
using namespace std;
#include<bitset>
#include<sstream>
 
int main()
{
stringstream sbits;
bitset<9> b9("101101101"), b91;
sbits<<b9;
sbits>>b91;
cout<<b91;
    return 0;
}
1
Эксперт C
25992 / 16199 / 3476
Регистрация: 24.12.2010
Сообщений: 35,450
21.08.2019, 08:48 10
Цитата Сообщение от IGPIGP Посмотреть сообщение
можно упаковать в целые
Можно и в целые, можно и в длинные. Я предложил в "байт", как в минимальный записываемый, ну и само слово как-то ближе...
1
3 / 3 / 0
Регистрация: 10.10.2017
Сообщений: 25
23.08.2019, 15:12  [ТС] 11
всем спасибо за помощь. Ваши советы помогли
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.08.2019, 15:12

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

Последовательность из 40 нулей и единиц
Всем доброго времени суток. Дали задание курсовой, даже нет идей как это реализовать. Задание:...

Последовательность единиц и нулей
помогите написать функцию которая посчитает и выведет число всех последовательностей например...

Постройте последовательность b1 , b2 , ..., bn из нулей и единиц
Пусть даны натуральное число n и вещественная квадратная матрица порядка n. Постройте...

Найти последовательность из нулей и единиц
Даны две целочисленные квадратные матрицы порядка 6 .Найти последовательность из нулей и единиц...


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

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

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