Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.05.2010, 15:55   #1
Henpyxa
 
Регистрация: 05.02.2010
Сообщений: 4
По умолчанию работа с битами

добрый день. не сочтите совсем за нуба (хотя я он и есть), но расшифруйте мне сл. код(подробно):
Код:
if(strchr(lett, s[i]))
	ch=static_cast<char>(s[i]&0xFC);
else
	ch=static_cast<char>(s[i]&0x0A);
потом несколько дополню свой вопрос, если сразу не пойму спасибо
Henpyxa вне форума Ответить с цитированием
Старый 22.05.2010, 16:02   #2
profi
Участник клуба Подтвердите свой е-майл
 
Регистрация: 19.11.2007
Сообщений: 1,022
По умолчанию

Код:
if(strchr(lett, s[i]))
Поиск символа в строке, если символ найден по битам сравниваем s[i] с числом 0xFC или s[i] с 0x0A.

Код:
static_cast<char>
преобразование к типу char.
profi вне форума Ответить с цитированием
Старый 22.05.2010, 16:54   #3
Henpyxa
 
Регистрация: 05.02.2010
Сообщений: 4
По умолчанию

ааа, оооо! это понятно.. тогда вот продолжение вопроса
если был найден символ (пускай будет латинская буква i), отвечающий некоторым условиям, то заменить младший бит единицей, иначе 2-й и 3-й заменить нулями.
как обратиться к определенному биту и как произвести замену?
зы: в аналогичных темах ответа не нашел
ззы: примеров в инете не нашел
зззы: студент-первокурсник

и еще вопрос до кучи: в mvs2008, работая с консолью, не могу вводить русские символы (а именно они мне и нужны для задания)...

ой, простите грешного, ошибку в коде допустил!
Код:
if(strchr(lett, s[i]))
	ch=static_cast<char>(s[i]&0xFC);
else
	ch=static_cast<char>(s[i]|0x0A);   //заменил & на |

Последний раз редактировалось Henpyxa; 22.05.2010 в 17:01.
Henpyxa вне форума Ответить с цитированием
Старый 22.05.2010, 18:50   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Цитата:
как обратиться к определенному биту и как произвести замену?
Учить битовые операции... Воспользуйтесь тем, что
1. 1 | 1 = 1, 0 | 1 = 1 - для установки
2. 1 & 0 = 0, 0 & 0 = 0 - для сброса

Допустим нам надо устаноить и сбросить нулевой бит:
0х01 - установлен только нулевой бит, perem - некоторая переменная
perem | 0x01 - ставим
perem & (~0x01) - сбрасываем
p51x вне форума Ответить с цитированием
Старый 22.05.2010, 19:20   #5
profi
Участник клуба Подтвердите свой е-майл
 
Регистрация: 19.11.2007
Сообщений: 1,022
По умолчанию

Вот пример:

Код:
#include <iostream.h>

int main()
{
	int x;

	for(int i = 1; i <= 10; i++){
		x = i & 0xFE;
		cout << x << "\n";
	}

	cout << "\n";

	return 0;
}
С помощью операции "И" налаживаем маску на число и меняем его 0 бит с 1 на 0. Из за этого нечетное число превращается в четное. p51x прав, почитайте про битовые операции, на пальцах сложно такое объяснить.
profi вне форума Ответить с цитированием
Старый 23.05.2010, 12:09   #6
Henpyxa
 
Регистрация: 05.02.2010
Сообщений: 4
По умолчанию

ну вот, читаю там, читаю сям, восновном непонятно описано.. а к вам пришел и сразу что-то понял спасибо, думаю, с тем, что вы мне дали, я смогу доделать задачку..

спасибо
Henpyxa вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа с битами тотошкин Общие вопросы C/C++ 2 22.04.2010 12:06
Работа с битами. Masip Общие вопросы Delphi 2 13.04.2010 13:03
Работа с битами viktory Помощь студентам 8 02.10.2009 18:33
Работа с битами в C dmitmal Общие вопросы C/C++ 5 20.05.2009 04:27
Работа с битами kesha2008 Общие вопросы C/C++ 2 24.02.2009 12:05