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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 28, средняя оценка - 5.00
revanatar
0 / 0 / 0
Регистрация: 28.08.2011
Сообщений: 35
#1

Битовое представление - C++

30.10.2011, 19:19. Просмотров 4071. Ответов 28
Метки нет (Все метки)

Как можно получить любой файл в виде массива бит (именно бит, не байт) чтобы произвести непосредственно над каждым битом действие, и из выходной последовательности бит получить файл (не список бит в текстовом файле, а именно файл из этих бит).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.10.2011, 19:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Битовое представление (C++):

Битовое представление - C++
Здравствуйте! Напишите пример функции, которая принимает целое число и выводит его битовое представление . int Bit_Representation (int...

Битовое представление int const - C++
Допустим int const i = -128. Но как узнать битовый вид перед тем как искать количество совпадающих единиц в старших 16 и младших 16?

Битовое представление каждого байта - C++
Вывести битовое представление каждого байта в интовой переменной. Прошу объясните как это сделать,можно даже без кода,просто не могу понять...

Функция, зеркально отображающая битовое представление числа - C++
Необходимо написать программу которая зеркально переворачивает битовое представление целого числа, помогите плз

Битовое представление вещественного числа, ошибка в коде - C++
#include <iostream> using namespace std; void binary (double x); //функция вывода представления числа через объединение int...

Битовое И - C++
Добрый день. Изучаю битовые операции, в частности битовое И. Вот в чём вопрос: 3 & 8 = 0, т.к. 1000 0011 (умножение) 0000 ...

28
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1305 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
31.10.2011, 16:20 #16
C++
1
2
3
4
5
6
7
8
int x = 1;// 1 или 0. восемь разных циферок
int byte = 0;
byte += x;
byte += x<<1;
byte += x<<2;
byte += x<<3;
...
//выводишь byte в файл
0
taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
31.10.2011, 16:25 #17
Цитата Сообщение от revanatar Посмотреть сообщение
с ним было бы в разы проще работать
В разы сложнее. Считай:
1. Извлечь, используя обращение к биту внутри байта.
2. Обработать массив.
3. Собрать снова байты, используя обращение к биту внутри байта.
Итого, как минимум втрое сложнее.
0
fasked
Эксперт С++
4945 / 2525 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
31.10.2011, 16:35 #18
Цитата Сообщение от revanatar Посмотреть сообщение
просто массив единиц и нулей, с ним было бы в разы проще работать
Это потому что Вы не достаточно хорошо представляете как применять битовые операции?
0
revanatar
0 / 0 / 0
Регистрация: 28.08.2011
Сообщений: 35
31.10.2011, 17:17  [ТС] #19
Так будут головоломательные циклы, так как мне надо будет каждый раз вытягивать биты из предидущей восьмерки чтобы складывать с текущими
0
fasked
Эксперт С++
4945 / 2525 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
31.10.2011, 17:20 #20
Цитата Сообщение от revanatar Посмотреть сообщение
Так будут головоломательные циклы, так как мне надо будет каждый раз вытягивать биты из предидущей восьмерки чтобы складывать с текущими
Пара макросов избавят Вас от этой проблемы.
0
taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
31.10.2011, 17:21 #21
Цитата Сообщение от revanatar Посмотреть сообщение
биты из предидущей восьмерки чтобы складывать
Биты, как и вообще цифры, не складываются. Складываются только числа, матрицы и вектора.
0
revanatar
0 / 0 / 0
Регистрация: 28.08.2011
Сообщений: 35
31.10.2011, 19:53  [ТС] #22
Ну неужели я не могу представить true как 1 а faulce как 0, и складывать по модулю 2?

Добавлено через 12 минут
И если уж говорить про биты, так в джаве например можно создать массив типа boolean.
Да и не в том дело, хотелось бы увидеть хоть один рабочий пример как разбирается файл побайтово и как собирается обратно.
0
revanatar
0 / 0 / 0
Регистрация: 28.08.2011
Сообщений: 35
04.11.2011, 20:02  [ТС] #23
Вот пример с сишными функциями, не могу понять почему в последнем цикле собирает файл неправильно, видимо счетчик неправильно работает. Почему так?
Код
char c;
FILE *in, *out;
in=fopen("D:\\WinRAR.rar", "rb");
out=fopen("D:\\WinRAR1.rar", "wb");
int k=0;
while(!feof(in))
	{fscanf(in,"%c",&c);
	k++;}
for(i=0;i<k;i++)
	{fscanf(in,"%c",&c);
	fprintf(out,"%c",c);}
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1305 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
04.11.2011, 20:09 #24
Как бы файл кончился.
0
revanatar
0 / 0 / 0
Регистрация: 28.08.2011
Сообщений: 35
04.11.2011, 20:13  [ТС] #25
Ну как бы не должен, я же беру i<k
0
castaway
Эксперт С++
4885 / 3020 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
04.11.2011, 20:17 #26
Ну..., как бы ты его не перемотал.
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1305 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
04.11.2011, 20:18 #27
Как бы ты берёшь после того, как файл кончился.
0
revanatar
0 / 0 / 0
Регистрация: 28.08.2011
Сообщений: 35
04.11.2011, 20:32  [ТС] #28
Да и еще вопрос есть:
у меня вот формула представления выходных бит B[i] = A[i]+B[i-6]+B[i-15], где + это операция xor, т.е. мне надо держать в памяти два байта перед тем с которым работаю, да и его самого, чтобы выполнять эту формулу. Как это можно осуществить? Например если я их буду сохранять как нули и единицы - не знаю как обратно получить байты, если же не хранить а обращатся к уже записанным - то не знаю как к ним обращаться. Или же загонять в массив char?

Добавлено через 1 минуту
как тогда перейти к началу файла?)
0
castaway
Эксперт С++
4885 / 3020 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
04.11.2011, 20:37 #29
Цитата Сообщение от revanatar Посмотреть сообщение
как тогда перейти к началу файла?)
fseek( fp, 0, SEEK_SET );
1
04.11.2011, 20:37
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.11.2011, 20:37
Привет! Вот еще темы с ответами:

Битовое сравнение чисел - C++
Создать функцию которая возвращает число, полученное из побитового сравнения трех заданных чисел за следующим образом, если на однаковой...

Битовое чтение файлов - C++
Доброго времени суток! Правильно ли считываются файлы из битового документа, или лучше по-другому это делать? И как можно проверить,...

64 - битовое целое в double, альтернативы - C++
Доброго времени суток! Возникла такая проблема, скажем, есть два 64-битовых числа. Одно из них - размер файла, а другой - сколько байт...

Создать битовое поле для хранения времени - C++
Начали изучать битовые числа, запутался, не могу понять что и как должно реализовывать и как вообще работать с этими битами и для чего((( ...


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

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

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