| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > char vs unsigned char |
| Автор: Hagrael 17.8.2011, 18:18 | ||
Здравствуйте, программисты. Когда я использую char, то отводится ли у меня один бит под знак? И как объяснить такое?
На консоль выводится 8! Премного благодарен. |
| Автор: Чoо 17.8.2011, 18:41 |
| unsigned - число без знака. Занимает 1 байт, соотв диапозон значений 0,,FF signed - число со знаком, соотв диапозон значений -7F..7F - следовательно отводится, но char по прежнему занимает 1 байт. Второй вопрос: вы сделали явное приведение типов, вот и выводится 8 Добавлено через 2 минуты и 21 секунду << - на самом деле, операция помещения в поток. Она определена так, что если в поток помещать значение типа char, будет отображен символ, если тип int - то будет выведено число, что вы и наблюдаете |
| Автор: rodnover 17.8.2011, 18:49 |
| число 8, что в unsigned char, что в char представляется одинаковой последовательностью битов (00001000) |
| Автор: Hagrael 17.8.2011, 19:12 |
| Но почему выводится 8, а не 10? |
| Автор: Чoо 17.8.2011, 19:27 |
| oct 10 = dec 8 Добавлено @ 19:28 char c = \10 - значение в восьмеричной системе счисления char c=\x10 - в шестнадцатеричной |
| Автор: voral 17.8.2011, 19:32 |
| а если '/11' будет 9 а если '/07' будет 7 а если '/08' будет ругаться компилер Ибо сие есть восьмиричная система Ну вот опередили...... |
| Автор: Чoо 17.8.2011, 19:39 |
| чуть поправил там опечатку.. было dec10=oct8 |
| Автор: rodnover 17.8.2011, 19:41 | ||||
Если надо присвоить 10 сделай так:
Для справки можно сделать так:
|
| Автор: Hagrael 18.8.2011, 08:02 |
| Автор: Hagrael 18.8.2011, 08:20 |
| А-а, тут программист указывает 8-ричное число изначально ?001010? Левый или правый бит выделится под минус? |
| Автор: Чoо 18.8.2011, 08:54 |
| выделяется "левый" Добавлено через 22 секунды думаю правильней - старший бит |
| Автор: mes 18.8.2011, 09:17 |
грубо говоря, никакой.. http://en.wikipedia.org/wiki/Method_of_complements |
| Автор: Hagrael 18.8.2011, 09:58 |
| Википедия, да еще и на английском о_О Не осилю. Если вам нетрудно, mes, скажите, что вы имели в виду под словами "никакой". |
| Автор: xvr 18.8.2011, 11:54 |
10 = 00001010 -10 = 11110110 (побитовая инверсия + 1) |
| Автор: Чoо 18.8.2011, 12:02 | ||
так в этом случае какое перед нами число мы судим по самому старшему биту.. так-то 11110110 может быть равно и 246 |
| Автор: xvr 18.8.2011, 12:17 |
Может, если оно беззнаковое. |
| Автор: Hagrael 18.8.2011, 12:25 |
| Чoо, как я понимаю, если n <= 1111, то n рассматривается как положительное число, равное n, а если же n > 1111 (n = 10001111 || n = 1011111 etc), то оно рассматривается как отрицательное число, равное -(n-1111) или же 1111-n. Чисто догадка |
| Автор: Чoо 18.8.2011, 12:30 |
| что-то я не понял догадку |
| Автор: mes 18.8.2011, 12:34 |
а нажать на русский неужто так затруднительно ?! |
| Автор: borisbn 18.8.2011, 13:14 |
основсой язык программиста (не ЯП, а просто "язык") - английский. Иначе получится это ![]() |
| Автор: boostcoder 18.8.2011, 13:18 |
| о чем речь? |
| Автор: azesmcar 18.8.2011, 13:20 |
| Напомнило: Существует 10 типов людей: те, которые понимают двоичную систему, и те, которые ее не понимают |
| Автор: boostcoder 18.8.2011, 13:25 |
вот скажите, "type requirements" и "концепт", это одно и то же? т.е. в диалоге использовать слово "концепт" будет правильно? а то "type requirements" слишком длинное словосочетание) Добавлено через 3 минуты и 10 секунд а почему 10? в чем подвох? |
| Автор: azesmcar 18.8.2011, 13:29 |
ты из второй категории |
| Автор: boostcoder 18.8.2011, 13:32 |
| знаю-знаю |
| Автор: mes 18.8.2011, 14:37 |
boostcoder, а чему равна двоичная 10 ? |
| Автор: boostcoder 18.8.2011, 14:40 | ||
2? а на вопрос:
|