将二进制数拆分为数字

时间:2016-09-09 19:08:47

标签: c++ bit

在正常整数的情况下,我们使用%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 个答案:

答案 0 :(得分:2)

右移(>>)运算符用于将位移位到表达式中指定的位置。

例如

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

现在,尝试使用此目标实现目标。

修改:

OP在本答复的评论部分中描述的问题。

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

答案 1 :(得分:2)

相当逻辑上,使用/ 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;
  }
}