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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.02.2011, 19:24   #1
kaljan775
:D
Форумчанин
 
Аватар для kaljan775
 
Регистрация: 26.09.2010
Сообщений: 570
По умолчанию число -> поток

каким образом cout<< обрабатывает число так, что оно превращается в знаки, и наоборот.Вот допустим число int a=123; - int - 2 байта, 16 бит,
0000 0000 0111 1011, так? и оно преобразуется в последовательность 0000 0001 0000 0010 0000 0011, как это происходит? и как заставить это на себя работать ?
Пишу ПО, создаю сайты, делаю курсовые работы, за деньги
C#, .NET, MS SQL, AngularJS, HTML, jQuery
kaljan775 вне форума Ответить с цитированием
Старый 02.02.2011, 19:29   #2
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

Цитата:
и оно преобразуется в последовательность 0000 0001 0000 0010 0000 0011,
нифига не понял =) зачем преобразовывать?
NiCola999 вне форума Ответить с цитированием
Старый 02.02.2011, 19:48   #3
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

Цитата:
2 байта, 16 бит
По стандарту, int это не обязательно 2 байта, а байт — это не обязательно 8 бит.
А что ты там хочешь заставить на себя работать?
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su
Obey-Kun вне форума Ответить с цитированием
Старый 02.02.2011, 19:51   #4
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

kaljan775
вообще-то sizeof(int) = 4 байта на x32 машинах.
NiCola999 вне форума Ответить с цитированием
Старый 02.02.2011, 19:54   #5
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

Цитата:
вообще-то sizeof(int) = 4 байта на x32 машинах.
может и отличаться, зависит от компилятора
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su
Obey-Kun вне форума Ответить с цитированием
Старый 02.02.2011, 20:02   #6
kaljan775
:D
Форумчанин
 
Аватар для kaljan775
 
Регистрация: 26.09.2010
Сообщений: 570
По умолчанию

арр, ну вот смотрите )

Код:
ofstream out("text.txt");
int a=123;//в памяти a представлена как 0000 0000 0000 0000 0000 0000 0111 1011
//да, sizeof (int) возвращает 4, ну не суть
out<<a;
out.close();
итак, в файле сейчас хранится число 123, если мы его считаем через файловый ввод
Код:
ifstream in("text.txt");
char q[4];
in>>q;
то мы получим в массиве символов
q[0]='1' = 0011 0001
q[1]='2' = 0011 0010
q[2]='3' = 0011 0011
q[3]='\0'= 0000 0000

так вот, собственно вот в чем вопрос: как производится преобразование из int к char ?
Пишу ПО, создаю сайты, делаю курсовые работы, за деньги
C#, .NET, MS SQL, AngularJS, HTML, jQuery

Последний раз редактировалось kaljan775; 02.02.2011 в 20:08.
kaljan775 вне форума Ответить с цитированием
Старый 02.02.2011, 20:07   #7
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

Цитата:
как производится преобразование из int к char ?
число размером sizeof(int) байта обрезается до sizeof(char) байт
NiCola999 вне форума Ответить с цитированием
Старый 02.02.2011, 20:17   #8
kaljan775
:D
Форумчанин
 
Аватар для kaljan775
 
Регистрация: 26.09.2010
Сообщений: 570
По умолчанию

ооо, мой мозг нет, это-то понятно, как все это передается в выходной поток и там обрабатывается ?)
Пишу ПО, создаю сайты, делаю курсовые работы, за деньги
C#, .NET, MS SQL, AngularJS, HTML, jQuery
kaljan775 вне форума Ответить с цитированием
Старый 03.02.2011, 00:30   #9
|{ot
Форумчанин
 
Аватар для |{ot
 
Регистрация: 09.03.2008
Сообщений: 127
По умолчанию

Цитата:
Сообщение от Obey-Kun Посмотреть сообщение
По стандарту, int это не обязательно 2 байта, а байт — это не обязательно 8 бит.
Ниче себе: "байт — это не обязательно 8 бит" - не пугай меня
Пример то приведи, где и какой это байт не 8 бит????

А int в С\С++ это обязательно 4 байта на 32-х разрядных системах во всех компиляторах (если ты конечно свой не написал)
int в зависимости от разрядности системы меняет свой размер (только в некоторых 64-х разрядных компиляторах int все так же 32 бита)
Цитата:
Сообщение от www.rsdn.ru/forum/cpp
// Data models
// Data Type LP32 ILP32 SILP64 ILP64 LLP64 LP64
// char 8 8 8 8 8 8
// short 16 16 64 16 16 16
// int 16 32 64 64 32 32
// long 32 32 64 64 32 64
// long long (int64) 64 64 64 64 64 64
// pointer 32 32 64 64 64 64

// __int8 8 8 8 8 8 8
// __int16 16 16 16 16 16 16
// __int32 32 32 32 32 32 32
// __int64 64 64 64 64 64 64

/*
MacOS (Apple Mac) 32 - LP32
LLP64 - for 32 bit application on 64 bit os
OS Mode
Windows XP-64 / IA64 LLP64
Linux LP64
Solaris LP64
DEC OSF/1 Alpha LP64
SGI Irix LP64
HP UX 11 LP64
*/

Последний раз редактировалось |{ot; 03.02.2011 в 00:37.
|{ot вне форума Ответить с цитированием
Старый 03.02.2011, 00:43   #10
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

kaljan775
вообще то у вас число преобразовано было из машинного представления(двоичного) в текстовый десятичный вид.
надеюсь знаете как переводится из двоичной системы в десятичную?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 03.02.2011 в 00:45.
Пепел Феникса вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поток. Не получается создать поток. Выдает ошибки при запуске bigory Общие вопросы по Java, Java SE, Kotlin 3 23.09.2010 00:40
Написать программу, которая за меньшее число ходов отгадывает загаданное число gomz007 Помощь студентам 16 08.11.2009 12:57
Вывести число, предшествующее первому отрицательному и число, следующее за последним отрицательным Rid Паскаль, Turbo Pascal, PascalABC.NET 4 22.12.2008 16:50
Найти и вывести все слова,у котоpых число гласных букв пpевышает число согласных. Briz Помощь студентам 2 11.05.2008 00:56
Ввести число N и определить делится ли оно без остатка на число M (VBA) Ivanich Microsoft Office Excel 7 24.04.2008 19:43