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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вопросы по символам 
:(
    Опции темы
reCoder
  Дата 5.10.2006, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здраствуйте.
Очень интересует следующий вопрос.

В двоичном виде можно представить числа от 0 до 255. 
Рассмотрим внутринности EXE файла. Неужели там символы только из такого диапазона ?

Результат выполнения след. кода удевил, т.к. на екране увидел отрицательные числа и нули. 


Код
        char buf;
        ifstream file;
        file.open("file.exe");
        
        int i = 0;
        while (file.get(buf))
        {
         ++i;
         cout << (int )buf << "\n";
        }
        
        file.close();


Поясните пожалуйста
PM MAIL   Вверх
Daevaorn
Дата 5.10.2006, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

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



Цитата(reCoder @  5.10.2006,  21:30 Найти цитируемый пост)
В двоичном виде можно представить числа от 0 до 255

Не совсем так. Это количество различных значений в одном байте, т.е. 2^8. Если взять допустим 2 байта и сказать, что они обозначают одно число, то получается 2^16, что уже больше 65 тысяч. И так далее.
Цитата(reCoder @  5.10.2006,  21:30 Найти цитируемый пост)
Результат выполнения след. кода удевил, т.к. на екране увидел отрицательные числа и нули. 

Ты читаешь по одному чару (1 байт), а выводишь на консоль преобразуя в int, котрый является знаковым целым из 4х байт (на 32х битной системе конечно)
PM MAIL WWW   Вверх
reCoder
Дата 5.10.2006, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Немного ушли от вопроса.
Тоесть системы произвольно могут ставить символ не по одному байту, а по нескольким ?

Тоесть символов в ЕХЕ конечно больше чем 256 ?

Добавлено @ 20:46 
Цитата

Ты читаешь по одному чару (1 байт), а выводишь на консоль преобразуя в int, котрый является знаковым целым из 4х байт (на 32х битной системе конечно) 


Как тогда узнать номер этого символа, чтобы потом в двоичный вид ?

Это сообщение отредактировал(а) reCoder - 5.10.2006, 20:43
PM MAIL   Вверх
MAKCim
Дата 5.10.2006, 21:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

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



старший бит в char - знаковый
при преобразовании в int просходит заполнение битов старших 3-х байтов знаковым битом младшего байта
а так как int - тоже знаковый - оттого и отрицательные числа

Это сообщение отредактировал(а) MAKCim - 5.10.2006, 21:40


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

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


Новичок



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

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



спасибо. понял  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

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

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


 




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


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

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