将二进制数拆分为位数
Split Binary number into Digits
对于正常整数,我们使用%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;
}
}
相关文章:
- visual在c++中将十进制数转换为二进制数
- 二进制数之和(使用C样式字符串)
- 以 10 c++ 为基数显示 1024 位二进制数
- 二进制数和位标志'x'
- C++ 二进制数到整数值的数组
- 拆分字符数组并存储为向量
- 通过拆分字符数组来创建字符串
- 二进制数组中最大连续 1 的起始和结束索引,以 C++ 为单位
- dev如何在C++中比较二进制数
- 递归回溯打印长度为N的二进制数的所有组合,而不使用循环
- 向后打印二进制数
- 使用位黑客反转二进制数
- 添加两个二进制数(整数数组)
- 从 0 到 n 的二进制数,具有相同数量的字符/
- 我通过迭代加法将二进制数转换为十进制并检查单个字符(请参阅代码)的方法有什么问题?
- 所有测试用例都将小数点转换为二进制数
- 尝试将二进制数组转换为十六进制C++然后打印结果
- 如何缩放二进制数组以保留值
- 将二进制数拆分为位数
- 拆分一个二进制数字符串,并将其存储在c++中的int类型数组中