Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> char vs unsigned char 
:(
    Опции темы
Hagrael
Дата 17.8.2011, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 143
Регистрация: 26.6.2011

Репутация: нет
Всего: нет



Здравствуйте, программисты. Когда я использую char, то отводится ли у меня один бит под знак? И как объяснить такое? smile 
Код

unsigned char a = '\10';
std::cout << (int) a;

На консоль выводится 8!

Премного благодарен.
PM MAIL   Вверх
Чoо
Дата 17.8.2011, 18:41 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 313
Регистрация: 22.9.2009

Репутация: 4
Всего: 4



unsigned - число без знака. Занимает 1 байт, соотв диапозон значений 0,,FF
signed - число со знаком, соотв диапозон значений -7F..7F - следовательно отводится, но char по прежнему занимает 1 байт.
Второй вопрос: вы сделали явное приведение типов, вот и выводится 8

Добавлено через 2 минуты и 21 секунду
<< - на самом деле, операция помещения в поток. Она определена так, что если в поток помещать значение типа char, будет отображен символ, если тип int - то будет выведено число, что вы и наблюдаете


--------------------
user posted image

OS: Debian Squeeze (kernel 3.8.2)
IDE: qtCreator 1.3.1; Eclipse SDK 3.5.2
PM MAIL   Вверх
rodnover
Дата 17.8.2011, 18:49 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 7.4.2009

Репутация: 2
Всего: 10



число 8, что в unsigned char, что в char представляется одинаковой последовательностью битов (00001000)

Это сообщение отредактировал(а) rodnover - 17.8.2011, 18:49
PM MAIL   Вверх
Hagrael
Дата 17.8.2011, 19:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 143
Регистрация: 26.6.2011

Репутация: нет
Всего: нет



Но почему выводится 8, а не 10?
PM MAIL   Вверх
Чoо
Дата 17.8.2011, 19:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 313
Регистрация: 22.9.2009

Репутация: 4
Всего: 4



oct 10 = dec 8

Добавлено @ 19:28
char c = \10 - значение в восьмеричной системе счисления 
char c=\x10 - в шестнадцатеричной

Это сообщение отредактировал(а) Чoо - 17.8.2011, 19:37


--------------------
user posted image

OS: Debian Squeeze (kernel 3.8.2)
IDE: qtCreator 1.3.1; Eclipse SDK 3.5.2
PM MAIL   Вверх
voral
Дата 17.8.2011, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 158
Регистрация: 16.3.2008
Где: Иваново

Репутация: нет
Всего: нет



а если '/11' будет 9
а если '/07' будет 7
а если '/08' будет ругаться компилер
Ибо сие есть восьмиричная система


Ну вот опередили...... smile

Это сообщение отредактировал(а) voral - 17.8.2011, 19:33
PM MAIL WWW   Вверх
Чoо
Дата 17.8.2011, 19:39 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 313
Регистрация: 22.9.2009

Репутация: 4
Всего: 4



чуть поправил там опечатку.. было dec10=oct8 smile 


--------------------
user posted image

OS: Debian Squeeze (kernel 3.8.2)
IDE: qtCreator 1.3.1; Eclipse SDK 3.5.2
PM MAIL   Вверх
rodnover
Дата 17.8.2011, 19:41 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 7.4.2009

Репутация: 2
Всего: 10



Если надо присвоить 10 сделай так:
Код

unsigned char a = 10;


Для справки можно сделать так:


Код

unsigned char a = -1;
std::cout << (int) a; // Выведет 255



Это сообщение отредактировал(а) rodnover - 17.8.2011, 19:42
PM MAIL   Вверх
Hagrael
Дата 18.8.2011, 08:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 143
Регистрация: 26.6.2011

Репутация: нет
Всего: нет



smile Я сейчас запустил калькулятор, ввел там 10 в десятичной системе, потом сменил эту систему на восьмеричную и получил 12!
PM MAIL   Вверх
Hagrael
Дата 18.8.2011, 08:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 143
Регистрация: 26.6.2011

Репутация: нет
Всего: нет



А-а, тут программист указывает 8-ричное число изначально smile Теперь понятно. А вообще какой бит выделяется для показания знака? Вот, к примеру, у меня число -10.
?001010?
Левый или правый бит выделится под минус?
PM MAIL   Вверх
Чoо
Дата 18.8.2011, 08:54 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 313
Регистрация: 22.9.2009

Репутация: 4
Всего: 4



выделяется "левый"

Добавлено через 22 секунды
думаю правильней - старший бит


--------------------
user posted image

OS: Debian Squeeze (kernel 3.8.2)
IDE: qtCreator 1.3.1; Eclipse SDK 3.5.2
PM MAIL   Вверх
mes
Дата 18.8.2011, 09:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(Чoо @  18.8.2011,  07:54 Найти цитируемый пост)
думаю правильней - старший бит 

грубо говоря, никакой.. smile 
http://en.wikipedia.org/wiki/Method_of_complements


--------------------
PM MAIL WWW   Вверх
Hagrael
Дата 18.8.2011, 09:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 143
Регистрация: 26.6.2011

Репутация: нет
Всего: нет



Википедия, да еще и на английском о_О Не осилю. Если вам нетрудно, mes, скажите, что вы имели в виду под словами "никакой".
PM MAIL   Вверх
xvr
Дата 18.8.2011, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Цитата(Hagrael @  18.8.2011,  09:58 Найти цитируемый пост)
кажите, что вы имели в виду под словами "никакой". 

10  = 00001010
-10 = 11110110 (побитовая инверсия + 1)


PM MAIL   Вверх
Чoо
Дата 18.8.2011, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 313
Регистрация: 22.9.2009

Репутация: 4
Всего: 4



Цитата(xvr @ 18.8.2011,  11:54)
Цитата(Hagrael @  18.8.2011,  09:58 Найти цитируемый пост)
кажите, что вы имели в виду под словами "никакой". 

10  = 00001010
-10 = 11110110 (побитовая инверсия + 1)

так в этом случае какое перед нами число мы судим по самому старшему биту.. так-то 11110110 может быть равно и 246

Это сообщение отредактировал(а) Чoо - 18.8.2011, 12:03


--------------------
user posted image

OS: Debian Squeeze (kernel 3.8.2)
IDE: qtCreator 1.3.1; Eclipse SDK 3.5.2
PM MAIL   Вверх
xvr
Дата 18.8.2011, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Цитата(Чoо @  18.8.2011,  12:02 Найти цитируемый пост)
ак-то 11110110 может быть равно и 246

Может, если оно беззнаковое. 
PM MAIL   Вверх
Hagrael
Дата 18.8.2011, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 143
Регистрация: 26.6.2011

Репутация: нет
Всего: нет



Чoо, как я понимаю, если n <= 1111, то n рассматривается как положительное число, равное n, а если же n > 1111 (n = 10001111 || n = 1011111 etc), то оно рассматривается как отрицательное число, равное -(n-1111) или же 1111-n. Чисто догадка smile
PM MAIL   Вверх
Чoо
Дата 18.8.2011, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 313
Регистрация: 22.9.2009

Репутация: 4
Всего: 4



что-то я не понял догадку


--------------------
user posted image

OS: Debian Squeeze (kernel 3.8.2)
IDE: qtCreator 1.3.1; Eclipse SDK 3.5.2
PM MAIL   Вверх
mes
Дата 18.8.2011, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(Hagrael @  18.8.2011,  08:58 Найти цитируемый пост)
 да еще и на английском 

а нажать на русский неужто так затруднительно ?!  smile 


--------------------
PM MAIL WWW   Вверх
borisbn
Дата 18.8.2011, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 21
Всего: 135



Цитата(Hagrael @  18.8.2011,  09:58 Найти цитируемый пост)
Википедия, да еще и на английском о_О Не осилю

основсой язык программиста (не ЯП, а просто "язык") - английский. Иначе получится это
user posted image


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
boostcoder
Дата 18.8.2011, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 20
Всего: 110



о чем речь? smile 
PM WWW   Вверх
azesmcar
Дата 18.8.2011, 13:20 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Напомнило:
Существует 10 типов людей: те, которые понимают двоичную систему, и те, которые ее не понимают smile 
PM   Вверх
boostcoder
Дата 18.8.2011, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 20
Всего: 110



Цитата(azesmcar @  18.8.2011,  13:20 Найти цитируемый пост)
и те, которые ее не понимают

 smile 

вот скажите, "type requirements" и "концепт", это одно и то же? т.е. в диалоге использовать слово "концепт" будет правильно? а то "type requirements" слишком длинное словосочетание)

Добавлено через 3 минуты и 10 секунд
Цитата(azesmcar @  18.8.2011,  13:20 Найти цитируемый пост)
10 типов людей

а почему 10? в чем подвох?
PM WWW   Вверх
azesmcar
Дата 18.8.2011, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Цитата(boostcoder @  18.8.2011,  13:25 Найти цитируемый пост)
а почему 10? в чем подвох? 

ты из второй категории smile 
PM   Вверх
boostcoder
Дата 18.8.2011, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 20
Всего: 110



знаю-знаю smile 
PM WWW   Вверх
mes
Дата 18.8.2011, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(boostcoder @  18.8.2011,  12:25 Найти цитируемый пост)
а почему 10? в чем подвох? 

boostcoder, а чему равна двоичная 10 ?



--------------------
PM MAIL WWW   Вверх
boostcoder
Дата 18.8.2011, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 20
Всего: 110



Цитата(mes @  18.8.2011,  14:37 Найти цитируемый пост)
а чему равна двоичная 10 ?

2?

а на вопрос:
Цитата(boostcoder @  18.8.2011,  13:25 Найти цитируемый пост)
"type requirements" и "концепт", это одно и то же? т.е. в диалоге использовать слово "концепт" будет правильно?


PM WWW   Вверх
Hagrael
Дата 18.8.2011, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 143
Регистрация: 26.6.2011

Репутация: нет
Всего: нет



borisbn, я знаю английский на нормальном уровне и смогу перевести обычный текст, но wiki я и с русского на русский перевести не смогу smile

Цитата(azesmcar @  18.8.2011,  13:20 Найти цитируемый пост)
Существует 10 типов людей: те, которые понимают двоичную систему, и те, которые ее не понимают

smile smile smile

Это сообщение отредактировал(а) Hagrael - 18.8.2011, 18:14
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0956 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.