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