Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Ада и другие языки _ битовое поле

Автор: blackhard 18.03.2008 2:01

для управления программой которую мне нужно написать используется битовое поле в 32 бита тоесть программа смотрет какие биты выставлены и выполнять соответствующие действия.я понял как выставить и как убрать бит

 int ug=0x00000001;
ug|=0x00000004; //для выставления бита
ug&=`0x00000004;//для снятия бита

а вот как потом проанализировать ug и определить какие биты выставлены?

Автор: volvo 18.03.2008 2:27

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

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


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

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

Автор: blackhard 18.03.2008 2:35

Цитата(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 18.03.2008 2:38

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

Автор: blackhard 18.03.2008 2:59

Цитата(volvo @ 17.03.2008 22:38) *

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

спасибо! как я сразу не додумался)?

Автор: blackhard 18.03.2008 20:01

у меня возник еще вопрос.как обработать нажатие клавиши F1 у нее ведь расширенный код если просто getch() то результат 0 , как достать 2символ кода?

Автор: volvo 18.03.2008 20:05

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

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


Автор: blackhard 18.03.2008 20:15

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

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

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



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