Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > системы счисления


Автор: redwhite90 23.10.2011, 11:52
Есть ли в с++ какое то встроенное средство для перевода чисел из одной системы счисления в другую?

Автор: mes 23.10.2011, 13:09
Цитата(redwhite90 @  23.10.2011,  10:52 Найти цитируемый пост)
для перевода чисел из одной системы счисления в другую?

для ввода/вывода чисел в заданной системе счисления - да есть ..

вот у стандартных потоков  для 8-,10-,16-ричных систем : 
http://www.cplusplus.com/reference/iostream/manipulators/hex/

расширяется путем написания нужного манипулятора..

также можно взглянуть на наследованные от си 
http://www.cplusplus.com/reference/clibrary/cstdlib/atoi/
и те что ниже..

Автор: redwhite90 23.10.2011, 13:17
а если мне числа надо постоянно переводить из 10 в двоичную СС, причём не при вводе/выводе, то придёся ручками всё писать?

Автор: mes 23.10.2011, 13:24
Цитата(redwhite90 @  23.10.2011,  12:17 Найти цитируемый пост)
а если мне числа надо постоянно переводить из 10 в двоичную СС,

числа всегда хранятся в двоичном виде.. Вы можете их переводить только из/в строкового/e представления/e.. А это уже ввод/вывод..
Выводить можно не только на монитор, но и в строку (смотрите std::stringstream) ..

Добавлено через 3 минуты и 30 секунд
Цитата(redwhite90 @  23.10.2011,  12:17 Найти цитируемый пост)
 мне числа надо постоянно переводить из 10 в двоичную СС

постарайтесь поточнее сформулировать, что именно Вам нужно, тогда и ответ будет более точный.. 

Автор: redwhite90 23.10.2011, 13:32
есть 6 битовое число(двоичное).  его надо разделить на 2
1 - 1 и последний бит
2 - средние биты 
и перевести оба в десятичную СС

Добавлено @ 13:35
это должны быть две переменных типа int

Автор: newbee 23.10.2011, 14:16
redwhite90, не надо ничего никуда переводить. Все данные в машине хранятся в двоичном виде (есть экзотические недвоичные машины, но не суть важно). Nо, что комп печатает на экран, - лишь способ представления данных в человекочитаемом виде.

Цитата(redwhite90 @  23.10.2011,  14:32 Найти цитируемый пост)
есть 6 битовое число(двоичное).  его надо разделить на 2
1 - 1 и последний бит
2 - средние биты 
и перевести оба в десятичную СС
Смотри на битовые операции: "сдвиг вправо" (>>) и "и" (&).

А стандартной функции вывода числа в двоичном виде кстати говоря нет. Можешь сделать себе первый урок: вывод двоичного числа и второй урок: выполнение основного задания по разделению числа.

Автор: redwhite90 23.10.2011, 14:25
я что-то не понял как это реализовать

Добавлено через 1 минуту и 36 секунд
у меня исходное число(6 bit)  будети иметь вид
101011 например 

Автор: newbee 23.10.2011, 14:38
redwhite90, почитай про маски и сдвиги, потренируйся, если все еще не будет получаться, возвращайся с более конкретными вопросами "что я делаю не так?".

Автор: mes 23.10.2011, 14:38
Цитата(redwhite90 @  23.10.2011,  12:32 Найти цитируемый пост)
и перевести оба в десятичную СС

Цитата(redwhite90 @  23.10.2011,  12:32 Найти цитируемый пост)
это должны быть две переменных типа int

Цитата(redwhite90 @  23.10.2011,  13:25 Найти цитируемый пост)
я что-то не понял как это реализовать

перевести в систему счисления можно только строковое представление числа..
в инте оно всегда машинозависимо (т.е. в двоичной сс)


Цитата(redwhite90 @  23.10.2011,  12:32 Найти цитируемый пост)
есть 6 битовое число(двоичное).  его надо разделить на 2
1 - 1 и последний бит
2 - средние биты 

не понятно что Вы этим хотели сказать, но работая с битами никак не сказывается на вывод, и поумолчанию который будет выведен в 10ричной системе счисления.. 

Цитата(redwhite90 @  23.10.2011,  12:32 Найти цитируемый пост)
есть 6 битовое число(двоичное).  

ну просил же почетче формулировать.. шесть бит могут быть как частью потока данных, так частью переменной, так и строкой.. 
в вашей интерпретации задачи абсолютноне понятно, чего Вы желаете.. 


Автор: redwhite90 23.10.2011, 14:42
mes, 6 битовое число, о котором идёт речь, это строка string

Добавлено через 4 минуты и 53 секунды
и как сделать побитовый XOR у двух строк?
string1
10101010101111010100101
string2
11010101010111000000010

есть какие-то конверторы?

Автор: mes 23.10.2011, 14:48
Цитата(redwhite90 @  23.10.2011,  13:42 Найти цитируемый пост)
mes, 6 битовое число, о котором идёт речь, это строка string 

тоггда посмотрите сюда : 
http://www.cplusplus.com/reference/stl/bitset/

Добавлено через 57 секунд
Цитата(redwhite90 @  23.10.2011,  13:42 Найти цитируемый пост)
и как сделать побитовый XOR у двух строк?

http://www.cplusplus.com/reference/stl/bitset/operators/

Автор: redwhite90 23.10.2011, 15:41
mes, спасибо -  то, что надо.

строку только резать наверное как-то криво придётся при помощи []

Автор: mes 23.10.2011, 16:25
Цитата(redwhite90 @  23.10.2011,  14:41 Найти цитируемый пост)
строку только резать наверное как-то криво придётся при помощи [] 

зачем резать ? смотрите внимательней на конструкторы битсета smile

Автор: redwhite90 23.10.2011, 22:22
как я понял можно только со 2-ого по 4-ый бит. а чтоб 1-ый и последний (не второй) - так нельзя

Автор: redwhite90 23.10.2011, 22:59
как я понял можно только со 2-ого по 4-ый бит. а чтоб 1-ый и последний (не второй) - так нельзя

Автор: mes 23.10.2011, 23:30
Цитата(redwhite90 @  23.10.2011,  21:59 Найти цитируемый пост)
как я понял можно только со 2-ого по 4-ый бит. а чтоб 1-ый и последний (не второй) - так нельзя 

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

Автор: redwhite90 25.10.2011, 00:08
это тоже выйдет 2 действия)

Автор: ensalada1 16.4.2013, 09:50
Что то прям вообще тяжко понять)) Делфи проще будет...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)