|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
16.05.2009, 07:41 | #1 |
Регистрация: 17.04.2009
Сообщений: 5
|
Работа с битами в C
Здравствуйте!
Не знаю, как правильно написать программу, которая бы считывала блок данных из файла (1000 бит), инвертировала некоторые биты и записывала этот же блок в другой файл. Работать с файлами могу, но только побайтово. Если даже посимвольно считать, то как достучаться до конкретного бита из 1000, ведь это уже будет массив из 125 элементов? |
16.05.2009, 07:54 | #2 |
Пользователь
Регистрация: 28.03.2009
Сообщений: 38
|
смотри дискретную математику.
или вот тут посмотреть можешь http://ru.wikipedia.org/wiki/Битовые_операции инвертирование по маске BYTE x=чтототам; BYTE mask=маска;//где 0-там не инвертируется, где 1-инвертируется x=x^mask; а конкретный бит узнать можно так BYTE x=чтототам; BYTE xbit;//=) типа BYTE потому что нету битового типа(bool вообще это int=)) xbit=(x>>(номер бита))&1; |
16.05.2009, 10:08 | #3 |
Пользователь
Регистрация: 10.05.2009
Сообщений: 21
|
x&(1<<n)
будет 0, если на n+1 месте справа в x стоит 0 и не 0 если 1(нужно для ифов) x^(1<<n) поставит на это место 1 если там был 0 и 0, если была 1 x|(1<<n) поставит на это место 1 |
18.05.2009, 14:34 | #4 | |
Регистрация: 17.04.2009
Сообщений: 5
|
to radiohobbyt:
Цитата:
|
|
18.05.2009, 21:17 | #5 |
Пользователь
Регистрация: 28.03.2009
Сообщений: 38
|
Нет...это значит, что на элемент массива типа char номер 526/8 надо наложить маску 1<<(526%8)
Последний раз редактировалось radiohobbyt; 18.05.2009 в 21:47. |
20.05.2009, 04:27 | #6 |
Регистрация: 17.04.2009
Сообщений: 5
|
Спасибо! Попытаюсь разобраться =)
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Задача. Работа с псевдослучайными последовательностями (ПСП). Работа с цветом. | 0101 | Помощь студентам | 3 | 17.12.2009 23:57 |
Работа с битами | kesha2008 | Общие вопросы C/C++ | 2 | 24.02.2009 12:05 |