Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Функция для перевода чисел из шестнадцатиричной системы в двоичную.  (Прочитано 18601 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Янус
Постоялец

ru
Offline Offline
Пол: Мужской

« : 02-03-2010 07:26 » 

Здравсствуйте.  Возник, следующий вопрос, есть ли в MS VS 2008 функция для перевода шестнадцатиричных чисел  в двоичные (и вообще из одной системы в другую) ? В с# есть, а вот как обстаят дела в VS c++ 2008 не знаю. Спасибо.
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #1 : 02-03-2010 07:35 » 

Вобще-то все числа в компе вобще, а не в каком-то конкретном языке, - двоичные. Из какого типа в какой нужно преобразовать?

Или речь идёт всё-таки о форматированном отображении?
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Янус
Постоялец

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 02-03-2010 07:42 » 

По ходу выполнения задачи нужно число, которое записано в шеснадцатиричном виде перевести в двоичное представление.
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #3 : 02-03-2010 07:47 » 

Код:
	CString txt="";
DWORD dwd=число;
for(;dwd;dwd<<=1)
{
if(dwd&0x80000000)
{
txt+='1';
}
else
{
txt+='0';
}
}
Записан

Янус
Постоялец

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 02-03-2010 07:59 » 

Код:
	CString txt="";
DWORD dwd=число;
for(;dwd;dwd<<=1)
{
if(dwd&0x80000000)
{
txt+='1';
}
else
{
txt+='0';
}
}
А поподробней пожалуйста. Насклькоя я понял  dvd это число в шестнадцатиричном формате. txt это пустая строка в которую будет записыватся двоичное число. А вот нельзя ли объяснить принцип работы if ?
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #5 : 02-03-2010 08:06 » 

эээээээ

Янус, можно глупый вопрос, ты язык с++ знаешь , хотя бы немножко ?  Улыбаюсь
Записан

Янус
Постоялец

ru
Offline Offline
Пол: Мужской

« Ответ #6 : 02-03-2010 08:11 » 

Вот именно, что немножко. В основном код мне понятен, но  в понимании этой dwd&0x80000000 строки затрудняюсь.....
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #7 : 02-03-2010 08:13 » 

DWORD dwd - это я для примера. 4-байтовое беззнаковое число (двоичное, замечу, а не 16-чное. В компьютере всё только двоичное)

dwd&0x80000000  - операция "побитовое и" , если старший бит dwd установлен, то это выражение будет true, иначе - false
Записан

Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #8 : 02-03-2010 08:22 » 

что же это за ядрить-колотить такое?
Янус, который раз обращаю ваше внимание на полное не понимание того, как лежат данные в памяти
дело даже не в C/C++, а именно в непонимании некоторых основ отвязанных от языка.
Записан

Странно всё это....
Янус
Постоялец

ru
Offline Offline
Пол: Мужской

« Ответ #9 : 06-03-2010 12:57 » 

Спасибо, за совет ! Обязательно проработаю эту тему.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines