将二进制数拆分为位数

Split Binary number into Digits

本文关键字:拆分 二进制数      更新时间:2023-10-16

对于正常整数,我们使用%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等等. .

使用/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.
} 

如果你想使用数组,那么这就是你要找的:

#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;
  }
}