Как переписать один бит в другой? В Си.
Модератор: Злобный
Как переписать один бит в другой? В Си.
Как переписать один бит в другой? В Си.
допустим переписать третий бит в первый.
допустим переписать третий бит в первый.
Kria,
Не помню, как в си объявлеятся 8-битовый инт. Если что, поменяешь, как нужно...
short int a = 15;
short int mask = 0x20; // 00100000b = 20h
//Установка 3-го бита в 1;
a = a | mask;
"До конца" в жизни тебе хер кто когда объяснит. Учись учиться. Как вы программируете, не зная, как хрянятся числа в памяти компьютера? Это на первых уроках давать должны были.
Не помню, как в си объявлеятся 8-битовый инт. Если что, поменяешь, как нужно...
short int a = 15;
short int mask = 0x20; // 00100000b = 20h
//Установка 3-го бита в 1;
a = a | mask;
"До конца" в жизни тебе хер кто когда объяснит. Учись учиться. Как вы программируете, не зная, как хрянятся числа в памяти компьютера? Это на первых уроках давать должны были.
Всем спасибо всё разобрался
int x = 0xF0;
x |= (1 << 3); x &= ~(1 << 6);
устанавливает в 1-ый бит 3-ий и сбрасывает в 0-ой бит 6-ой
[off]добавлено спустя 15 минут:[/off]
Может кто подскажит ответ на другой вопрос!
main()
{
unsigned short u=65535; /*16 bit: 0xFFFF*/
short d=u; /* 15 bit + знаковый бит */
printf("%X %d\n",d,d); /*FFFFFF -1*/
}
какого d стало отрицательным и почему %X печатает больше F чем в исходном коде?
Я понимаю что
интервал short -32768 > 32768
интервал unsigned short 0> 65535 за счёт того что знаковый бит используется под цифры, на почему ответ
FFFF -1 не понимаю
int x = 0xF0;
x |= (1 << 3); x &= ~(1 << 6);
устанавливает в 1-ый бит 3-ий и сбрасывает в 0-ой бит 6-ой
[off]добавлено спустя 15 минут:[/off]
Может кто подскажит ответ на другой вопрос!
main()
{
unsigned short u=65535; /*16 bit: 0xFFFF*/
short d=u; /* 15 bit + знаковый бит */
printf("%X %d\n",d,d); /*FFFFFF -1*/
}
какого d стало отрицательным и почему %X печатает больше F чем в исходном коде?
Я понимаю что
интервал short -32768 > 32768
интервал unsigned short 0> 65535 за счёт того что знаковый бит используется под цифры, на почему ответ
FFFF -1 не понимаю
-
- Юзер
- Сообщения: 176
- Зарегистрирован: Пт янв 21, 2005 04:42
- Откуда: Кишинев
- Контактная информация:
Kria,
Дай угадаю:
Политех. Факультет CIM. 2 курс. Фалько раздал вопросы из Богатырева для промежутки.
Я прав ?
)))
вот про ДК(там же по ссылкам про ПК и ОК):
http://ru.wikipedia.org/wiki/%D0%94%D0% ... 0%BE%D0%B4
[off]добавлено спустя 3 минуты:[/off]
UPD: мда.. по ссылкам про ПК и ОК ничего не сказано
подойди к преподу по ASDN в политехе и попроси шоб объяснила
Дай угадаю:
Политех. Факультет CIM. 2 курс. Фалько раздал вопросы из Богатырева для промежутки.
Я прав ?

вот про ДК(там же по ссылкам про ПК и ОК):
http://ru.wikipedia.org/wiki/%D0%94%D0% ... 0%BE%D0%B4
[off]добавлено спустя 3 минуты:[/off]
UPD: мда.. по ссылкам про ПК и ОК ничего не сказано

подойди к преподу по ASDN в политехе и попроси шоб объяснила

-
- Юзер
- Сообщения: 176
- Зарегистрирован: Пт янв 21, 2005 04:42
- Откуда: Кишинев
- Контактная информация:
Происходит вот что(по крайней мере мне так кажетсяmain()
{
unsigned short u=65535; /*16 bit: 0xFFFF*/
short d=u; /* 15 bit + знаковый бит */
printf("%X %d\n",d,d); /*FFFFFF -1*/
}

u: 16 бит установлены в 1.
d: 15 бит устанорвлены в 1 и старший(знаковый) тоже в 1. Получается типа отрацательное число. Но в компе отрицательный числа хранятся в виде дополнительного кода. Для того чтобы его получить надо инвертировать и прибавить 1. Таким образом:
d: 1111111111111111 (ПК)
d: 1000000000000001 (ДК) == -1
вроде так.