2016-09-09 5 views
-2

В случае нормального целого, мы используем %10 для остальной части и /10, чтобы уменьшить цифру на одну цифру.Разделить двоичное число на цифры

Для двоичной цифры я мог бы использовать %2, чтобы получить остаток, но как удалить цифры из двоичного номера?

Если есть номер 0000, когда я выполняю /10, мне нужно 000 и не 0.

while (bin > 0) { 
    int rem = bin % 2; 
    // action_block; 
    // How do I divide ? 
    } 

Устранение путаницы, это проблема конкурентного сайта кодирования. Stdin будет целым числом, которое имеет двоичные данные. Пример: 1100001. Я хочу, чтобы его биты в массиве. arr [0] = 1, arr [1] = 1, arr [2] = 0, arr [3] = 0 и т. д.

+3

Что такое _binary number_ на самом деле? Числами являются числа, системы представления чисел - системы численного представления. –

+0

Может быть, вам нужны << & >> операторы? – vadikrobot

+2

Вы можете использовать оператор сдвига влево. – Shravan40

ответ

2

Смещение вправо (>>) Оператор используется для смещения битов вправо по положению указанных в выражении.

Например:

unsigned int num1 = 12; // 12 = 1100 
int num2 = 0;   
num2 = num1 >> 1; // 6 = 0110 
int num3 = 0; 
num3 = num1 >> 2; // 3 = 0011 

Теперь попытайтесь достичь своей цели с помощью этого.

Edit:

Как проблемы, описанной ОП в разделе комментариев этого ответа.

std::string inp; 
std:: cin >> inp. 
for (int i = 0; i < inp.length(); i++) { 
    std::stoi(inp[i]); // This will be 0,1. 
} 
+0

Боюсь, что в настоящее время ОП страдает от более фундаментальных недоразумений. –

+0

Я не думаю, что это то, что нужно OP. Похоже, что они пытаются разбить число, а вместо '123' на' 1', '2',' 3' им нужны '1',' 1', '1',' 1', '0', '1',' 1'. – NathanOliver

+0

Это для проблемы с CodeChef, stdin будет целым числом, которое имеет двоичные данные. Пример: 1100001. Я хочу, чтобы это были биты в массиве. arr [0] = 1, arr [1] = 1, arr [2] = 0 .. и т. д. Надеюсь, теперь я поняла. Еще раз извините. –

2

Достаточно логично, используйте/2. То же самое с любой базой.

0

Если вы хотите использовать массив, то это то, что вы ищете:

#include <iostream> 
#include <string> 

using namespace std; 

int main() 
{ 
    string input="0101011010"; 
    int arr[10]; 
    for(int i=0; i<10; i++) 
    { 
    arr[i]=input[i]-'0'; 
    } 
    for(int i=0; i<10; i++) 
    { 
    cout << arr[i] << endl; 
    } 
} 
+0

Что вы сделали с тем, чего я пытаюсь достичь. Но то же самое с целым типом данных в качестве входных данных. И, кстати, что означает '-'0''? –

+0

@AnirudhMurali _ «что означает« -0'' »? _' Char '- числа, поступающие из таблицы кодирования. Если вы хотите простые цифры, вы можете их рассчитать. –

Смежные вопросы