Помощь - Поиск - Пользователи - Календарь
Полная версия: битовое поле
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Ада и другие языки
blackhard
для управления программой которую мне нужно написать используется битовое поле в 32 бита тоесть программа смотрет какие биты выставлены и выполнять соответствующие действия.я понял как выставить и как убрать бит
 int ug=0x00000001;
ug|=0x00000004; //для выставления бита
ug&=`0x00000004;//для снятия бита

а вот как потом проанализировать ug и определить какие биты выставлены?
volvo
Цитата
для снятия бита
Это у тебя там "тильда" (~) должна быть, ты ее имел в виду?

Кстати, что именно ты хочешь знать, просто номера битов, которые выставлены, или проверить, выставлен ли какой-то конкретный? Если второе - то


if(ug & 0x0000004 == 0x0000004) {
cout << "бит установлен" << endl;
}

Можно проще: if(ug & 0x0000004) { ... }, тогда если результат не ноль - значит, if выполняется...
blackhard
Цитата(volvo @ 17.03.2008 22:27) *

Это у тебя там "тильда" (~) должна быть, ты ее имел в виду?

Кстати, что именно ты хочешь знать, просто номера битов, которые выставлены, или проверить, выставлен ли какой-то конкретный? Если второе - то


if(ug & 0x0000004 == 0x0000004) {
cout << "бит установлен" << endl;
}

Можно проще: if(ug & 0x0000004) { ... }, тогда если результат не ноль - значит, if выполняется...

да именно это я и хотел узнать спасибо.и еще вопрос по заданию нам надо написать 2 программы и оболочку которая обрабатывает командную строку и чтоб не запускать каждую прогу отдельно нужно создать bat файл раньше мне не пртходилось с ними работать так вот как спомощью этого файла записать аргументы в командную строку если я пишу
Код

/i-это какбы аргумент
generator.exe
то выводится сообщение что /i не является стандартной командой а программа generator нифига не считывает из командной строки хотя если я записываю аргументы через vs6 progect/settings.... все работает.
volvo
Так и записываешь, как при запуске из консоли:
generator.exe /i
blackhard
Цитата(volvo @ 17.03.2008 22:38) *

Так и записываешь, как при запуске из консоли:
generator.exe /i

спасибо! как я сразу не додумался)?
blackhard
у меня возник еще вопрос.как обработать нажатие клавиши F1 у нее ведь расширенный код если просто getch() то результат 0 , как достать 2символ кода?
volvo
Этот вопрос не связан с битовыми полями, лучше бы ты новую тему открыл... А вообще - вот так:

int ch;
if(!(ch = getch()))
switch(ch = getch()) {
// здесь обрабатываешь расширенные клавиши
}
else
switch(ch) {
// здесь - обычные
}

blackhard
Цитата(volvo @ 18.03.2008 16:05) *

Этот вопрос не связан с битовыми полями, лучше бы ты новую тему открыл... А вообще - вот так:

int ch;
if(!(ch = getch()))
switch(ch = getch()) {
// здесь обрабатываешь расширенные клавиши
}
else
switch(ch) {
// здесь - обычные
}



да я понимаю что не связан)я подумал что он слишком мелкий чтоб тему из за него открывать.спасибо!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.