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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
ummahusla
1 / 1 / 0
Регистрация: 19.06.2012
Сообщений: 46
#1

Перевод бинарного номера в 32/8 бит код - C++

10.10.2012, 15:23. Просмотров 1132. Ответов 6
Метки нет (Все метки)

Нужно написать программу, которая будет неоднократно запрашивать целое число и будет отображать его в двоично числе в 32 битном коде. Прога будет заканчиватся, когда будет введённо 9999.

Пример:
Enter integer: 16
00000000000000000000000000010000
Enter integer: -1
11111111111111111111111111111111
Enter integer: 9999


На этом этапе у меня получился код:
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
#include "stdafx.h"
#include <iostream>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
 
int dec;
 
while (dec!=9999)
{
 
 
char bin32[] = "00000000000000000000000000000000";
for (int pos = 31; pos >= 0; --pos)
{
if (dec % 2) 
bin32[pos] = '1';
dec /= 2;
}
 
cout << "The binary of the given number is: " << bin32 << endl;
 
cout << "Enter the decimal to be converted: ";
cin >> dec;
 
}
 
 
 
}

Этот код работает только на простые числа, на негативные числа я не понимаю как написать..
Далее я не понимаю, и прошу вашей помощи в следующем:

Всё относится к тому же заданию, что и выше:

Мне нужно использовать один из операторов сдвига (<< или >>) и побитные AND и & (не &&). Если честно дальше задание, я не особо понимаю, но как я понимаю, основная идея заключается в том чтобы поработать с AND и маской. И как написать алгоритм из 32битного кода в 8бит

пример:

Number 01110010
Mask 10000000
AND'ed = 00000000

Далее, если результат ANDинговых данных с маской не являается нуль - принтить "1", else "0". Теперь можно переложить маску на один бит вправо (>>) и повторить AND

пример
number 01110010
mask 01000000
AND'ed = 01000000


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

Спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.10.2012, 15:23     Перевод бинарного номера в 32/8 бит код
Посмотрите здесь:

Исправить код бинарного дерева - C++
#include &lt;stdlib.h&gt; #include &lt;iostream&gt; struct uzel { int key;//хранится в вершине ключ-значение struct uzel...

Код Хаффмана реализованный через построение бинарного дерева - C++
Здравствуйте, есть код Хаффмана реализованный через построение бинарного дерева, узлами которого является элемент типа map ,либо символ и...

нужно написать програмный код для решения задачи создания бинарного файла - C++
:cry: Написать програмный код для решения задачи создания бинарного файла.

Перевод в 16 код - C++
Так работает if (isalpha(mess)) mess=0x20; Так нет if (isalpha(mess)) mess=0x(strlen(mess));

переход с 32 бит на 64 бит - C++
Здравствуйте. Пробую на builder 10 перевести проект с 32 на 64 бит. Возникают странные ошибки: template &lt;typename T&gt; class DOT { ...

Перевод код из Pascal в с++ - C++
const nmax = 20; type mas = array of integer; procedure printArray (var A: mas; n: byte); var i : byte; ...

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Psilon
Master of Orion
Эксперт .NET
5882 / 4779 / 633
Регистрация: 10.07.2011
Сообщений: 14,399
Записей в блоге: 5
Завершенные тесты: 4
10.10.2012, 16:23     Перевод бинарного номера в 32/8 бит код #2
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
#include <iostream>
 
using namespace std;
 
 
int GetIntFromBitArray(string s)
{
    int result = 0;
    while (s.length() < 32)
        s = '0' + s;
    for(int i = 0; i < 32; i++)
    {
        if ((s[i] != '0') && (s[i] != '1')) return 0;
        result <<=1;
        result += s[i] - '0';
    }
    return result;
}
 
 
int main()
{
    string input;
    int x;
    cout << "Input a string"<< endl; //1111
    cin >> input;
    x = GetIntFromBitArray(input); //15
    cout << x;
    return 0;
}
ummahusla
1 / 1 / 0
Регистрация: 19.06.2012
Сообщений: 46
10.10.2012, 16:25  [ТС]     Перевод бинарного номера в 32/8 бит код #3
Цитата Сообщение от Psilon Посмотреть сообщение
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
#include <iostream>
 
using namespace std;
 
 
int GetIntFromBitArray(string s)
{
    int result = 0;
    while (s.length() < 32)
        s = '0' + s;
    for(int i = 0; i < 32; i++)
    {
        if ((s[i] != '0') && (s[i] != '1')) return 0;
        result <<=1;
        result += s[i] - '0';
    }
    return result;
}
 
 
int main()
{
    string input;
    int x;
    cout << "Input a string"<< endl; //1111
    cin >> input;
    x = GetIntFromBitArray(input); //15
    cout << x;
    return 0;
}
Спасибо, а можно было бы пояснить немного, что к чему? Просто хочу понять..
Кот Ангенс
317 / 267 / 38
Регистрация: 24.05.2012
Сообщений: 629
10.10.2012, 16:27     Перевод бинарного номера в 32/8 бит код #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <bitset>
#include <iostream>
 
using namespace std;
 
int main() {
    bitset<32> bs;
    int t;
    char i;
    while (cin >> t, t != 9999) {
        bs = t;
        i = 31;
        do
            cout << bs[i];
        while (i--);
        cout << endl;
    }
}
Psilon
Master of Orion
Эксперт .NET
5882 / 4779 / 633
Регистрация: 10.07.2011
Сообщений: 14,399
Записей в блоге: 5
Завершенные тесты: 4
10.10.2012, 16:32     Перевод бинарного номера в 32/8 бит код #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int GetIntFromBitArray(string s)
{
    int result = 0;
    while (s.length() < 32) //Если число имеет вид 1111, приводим к виду 000...0001111
        s = '0' + s;
    for(int i = 0; i < 32; i++)
    {
        if ((s[i] != '0') && (s[i] != '1')) return 0; //Если строка состоит не только из нулей и единиц, то выходим
        result <<=1; //Делаем побитовый сдвиг влево, чтобы уже записанные биты не трогать
        result += s[i] - '0'; 
/* Записываем 0 или 1 в зависимости от того, что у нас в строке. 
 * Вычитаем код нуля чтобы в итоге получился 0 физически 
 * (т.к. если написать просто result += s[i], он будет складывать не сам ноль, 
 * а его код, в ascii-таблице это 48). 
 */
    }
    return result;
}
Попробуйте на бумажке это повторить. Если конечно понимаете, что такое побитовый сдвиг.
http://ru.wikipedia.org/wiki/%D0%9F%...B2%D0%B8%D0%B3
ummahusla
1 / 1 / 0
Регистрация: 19.06.2012
Сообщений: 46
10.10.2012, 18:52  [ТС]     Перевод бинарного номера в 32/8 бит код #6
Пробую запустить этот код, не работает


http://grab.by/gFhW - вот какая ошибка вылетает, что делать?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.10.2012, 19:10     Перевод бинарного номера в 32/8 бит код
Еще ссылки по теме:

Перевод симвлов с числовой код - C++
Перевод символов введённых с клавиатуры в числовое значение , помогите реализовать программу , не могу понять как ?

Перевод чисел в двоичный код - C++
неподскажите как переводить числа в двоичный код в borland C 3.1 под dos

Перевод числа в двоичный код - C++
Знаю вопрос детский но как перевести число в двоичный код, в 16-й и в 8-й знаю %x и %o а вот в двоичный нет.

Перевод строки в бинарный код - C++
Необходимо перевести строку типа string в бинарный код, соответствующий этой строке, включая пробелы и знаки препинания. Желательно в...

Перевод double в двоичный код - C++
Здравствуйте! Пожалуйста, скажите в какую сторону смотреть, не пойму как такое реализовать. С интом все просто, нужно делить,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Psilon
Master of Orion
Эксперт .NET
5882 / 4779 / 633
Регистрация: 10.07.2011
Сообщений: 14,399
Записей в блоге: 5
Завершенные тесты: 4
10.10.2012, 19:10     Перевод бинарного номера в 32/8 бит код #7
ummahusla, все компилируется:
http://ideone.com/587Z7
А вообще если возникают такие вопросы, лучше что-нибудь почитать (керниган ритчи например)
Yandex
Объявления
10.10.2012, 19:10     Перевод бинарного номера в 32/8 бит код
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru