Форум программистов, компьютерный форум CyberForum.ru

Перевод целого десятичного числа в двоичною систему числения - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как упростить работу с case http://www.cyberforum.ru/cpp-beginners/thread27811.html
Подскажите пожалуйста как сделать чтобы при вводе чисел от 1 до 20 был один case, от 21 до 40 второй , ну чтобы не вводить много раз : case 1 case 2 case 3 и т.д. а сразу от 1 до 3
C++ Не удалось создать командную строку для инструмента "VCCLCompilerTool". Создаю пустой проект Приложение MFC на основе диалоговых окон запускаю под Win32, всё нормально вылетает пустое окно с кнопками (ОК Cancel), меняю платформу под 5й мобайл, и не запускается. 1>34 : error PRJ0004 : Не удалось создать командную строку для инструмента "VCCLCompilerTool". помогите пожалуйста, вроде все настройки облазил и гуглил, не помогло. http://www.cyberforum.ru/cpp-beginners/thread27807.html
Настройка MS VS 2008 C++
Привет всем! Просмотрев многие темы на этом форуме и не только я увидел, что некоторые решение проблем полагают в изменение настроек студии. Напишите как правильно ёё настроить. Заранее благодарен за ответы.:)
Проблемы с русским в MS VS 2008 C++
Привет всем! У меня есть проблема в MS VS 2008 с русским. Если в коде написать комментарий или строку на русском, то после сохранения, закрытия и открытия исходника, то вместо русских букв иероглифы какие-то. Если поменять кодировку на 866 и запустить прог. с предварительным компилированием, то русский отображается норм. в окне программы, но в исходнике все равно остаются иероглифы. Заранее...
C++ v.studio 2005. c++ для WM http://www.cyberforum.ru/cpp-beginners/thread27796.html
первую "программу" я создал так: file > new proect > c++ > smart device > win32 app чета чета. И так если не поставить галочку на "empty proect" то "программа" готова. можно с дебуга взят ехе и зарускать. Проблема в том что если создать пустой проект то я не могу даже "привет мир" написать. А создав не пустой проект могу по шаблонам хотя бы уже имеющееся менять. Но если писать код не по...
C++ Юникод //------------------------------ #ifdef Unicode typedef std :: wstring STRING; typedef std :: wifstream IFSTREAM; #endif #ifndef Unicode typedef std :: string STRING; typedef std :: ifstream IFSTREAM; #endif //----------------------------------------------- подробнее

Показать сообщение отдельно
Yevgenijz
11 / 11 / 1
Регистрация: 31.03.2009
Сообщений: 69
02.04.2009, 07:36     Перевод целого десятичного числа в двоичною систему числения
Цитата Сообщение от BornLeader Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
using namespace std;
 
void DecToBin(int value)
{
  int mask = 0x8000;
  ~mask;
  for(int i=0;i<16;i++)
  {
    if(mask&value)
      cout << "1";
    else
      cout << "0";
    mask >>=1;
  }
  cout << endl;
}
 
int main(void)
{
  DecToBin(255);
  return 0;
}
Неправильно!
Потому что основано на неверном предположении, что тип int имеет 16 разрядов.
На самом деле это было в 16разрядной DOS, но в 32разрядных операционных системах int имеет 32разряда, а в 64разрядных 64 разряда. Это сделано специально для лучшей переносимости программ, написанных на С/C++ .
Следовало использовать sizeof(int), чтобы не быть привязанным к размерности int.
Для 16иразрядного числа есть термине short int, но это опять же не гарантируется.
Можно только построить цепочку без указания конкретной разрядности типа.
char<=short int<=int<=long int
P.S.
И пожалуйста, избавляйтесь от дурной паскалевской привычки записывать текст подпрограммы над текстом основной программы, читать такое неприятно. Текст подпрограммы должен находиться под текстом вызывающей, а не наоборот.(Это требование стиля, а не приказ, но все же не следует писать на C по-паскалевски-- это дурной тон)
Добавлено через 2 минуты 11 секунд
здесь усовершенствовал свою программу
обнаружил ошибку в своей программе и исправил
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
int main()
{
 const int kol_vo_bitov=sizeof(int)*8;
 char bin[kol_vo_bitov+1];
 register char *ptr=bin;// далее заполним массив двоичных цифр
 *ptr++ =' ';//первый символ пробел(если положительное)
 int chislo;
 int i;
 i=kol_vo_bitov;
 do{
  *ptr++ = '0';
 }while(--i); // заполняем строку кодом нуля
 printf("Vvedite chislo");
 scanf("%d",&chislo.i);
 if(chislo<0){
  bin[0]='-'; // код минуса
  chislo= 
  -chislo; // чтобы не получилось "отнять" =-
  if(chislo<0){ // единственный случай -2^kol_vo_bitov
   chislo=0;
   bin[1]='1';}
 }
 //i=kol_vo_bitov-1; эта строка не нужна
 do{
  *--ptr +=((char)chislo)&1; // младший бит
  chislo>>=1; // сдвигаем число вправо на 1 бит
 }while(chislo); // здесь изменение: если chislo=0, то остальные символы все равно 
                     //заполнятся символами нуля
 // теперь готова строка bin
 //вывод строки
 i=kol_vo_bitov+1;
 ptr=bin;
 do{
  putchar(*ptr++);
 }while(--i);
putchar('\n');
getch();
}
 
Текущее время: 00:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru