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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.05.2011, 14:32   #1
Hemul
Форумчанин
 
Регистрация: 03.10.2010
Сообщений: 321
По умолчанию Инвертация битов в переменной

Код:
#include<cstdio> 

int main() 
{ 
	unsigned  char a = 7;//char для более маленького размера переменной
	printf("%d   %d \n", a , ~a ); 
}
на выходе
7 -8
хотя 7 = 0000 0111 ,инвентируем 1111 1000 = 248 .
Обратите внимание на ,что тип unsigned , но выводит все равно -8

Почему так ?

Последний раз редактировалось Hemul; 08.05.2011 в 14:37.
Hemul вне форума Ответить с цитированием
Старый 08.05.2011, 15:40   #2
Sam Gold
Форумчанин
 
Аватар для Sam Gold
 
Регистрация: 26.03.2010
Сообщений: 538
По умолчанию

А кто сказал компилятору к какому типу относится ~a? Вот он ее по умолчанию и делает ее char. В printf надо явно указать тип
Код:
printf("%d   %d \n", a , (unsigned char)~a );
или создать еще одну переменную
Код:
unsigned char b = ~a;

	printf("%d   %d \n", a , b );
Единственный способ стать умнее - играть с более умным противником.
Sam Gold вне форума Ответить с цитированием
Старый 08.05.2011, 17:00   #3
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,120
По умолчанию

Hemul

Обратите внимание на ,что тип unsigned , но выводит все равно -8

почитай, что означает форматный спецификатор %d в printf
Rififi вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти значение переменной y в зависимости от значения переменной х Rishi Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 11.05.2011 20:25
Реверс битов SPBcore Помощь студентам 2 16.12.2010 19:34
Сдвиг битов XOKS Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 5 08.11.2010 18:11
Перестановка битов. RegentM Общие вопросы Delphi 3 05.11.2007 17:23
Работа с файлами (создание, удаление, открытие, связываение с переменной, очищение памяти переменной) Arkuz Общие вопросы Delphi 12 25.09.2007 20:47