c++十进制转二进制除二取余
时间: 2023-11-18 19:56:32 浏览: 94
在C++中,将十进制数转换为二进制数的方法是通过除以2取余数的方式来实现的。具体步骤如下:
1. 将十进制数除以2,得到商和余数。
2. 将余数记录下来,作为二进制数的一位。
3. 将商作为新的十进制数,重复步骤1和2,直到商为0为止。
4. 将记录下来的余数倒序排列,即为该十进制数对应的二进制数。
以下是一个C++代码示例,使用for循环反向输出取余结果:
```
int decimalToBinary(int decimal) {
int binary = 0, base = 1;
while (decimal > 0) {
int remainder = decimal % 2;
binary += remainder * base;
decimal /= 2;
base *= 10;
}
return binary;
}
int main() {
int decimal = 10;
int binary = decimalToBinary(decimal);
for (int i = 31; i >= 0; i--) {
int bit = (binary >> i) & 1;
cout << bit;
}
return 0;
}
```
其中,decimalToBinary函数用于将十进制数转换为二进制数,main函数中的for循环用于反向输出取余结果,从而得到该十进制数对应的二进制数。
相关问题
c++十进制转二进制
要将C语言中的十进制数转换为二进制数,可以使用以下步骤:
1. 首先,声明一个整型数组来存储每次对2取余的结果。在这个例子中,数组名为a,长度为16。
2. 接下来,使用一个for循环来进行转换。循环变量j的初始值为0,终止条件为j小于15。每次循环中,执行以下操作:
a. 使用变量i来存储给定的十进制数n对2取余的结果。即i = n % 2。
b. 使用变量b来存储n除以2的商。即b = n / 2。
c. 更新n的值为b。即n = b。
d. 将取余结果i存入数组a中。即a[j] = i。
e. 将循环变量j的值加1。即j++。
3. 接下来,使用另一个for循环来反向输出数组a中的取余结果。循环变量j的初始值为15,终止条件为j大于等于0。每次循环中,执行以下操作:
a. 输出数组a中的元素a[j]。
b. 如果j对4取模的结果等于0,则输出一个空格。
4. 最后,结束程序的执行。
下面是一个示例代码,可以实现将十进制数转换为二进制数的功能:
#include <iostream>
using namespace std;
int main() {
int i, n;
int a[16] = {0};
cout << "请输入一个整数(0-32767): ";
cin >> n;
for (int j = 0; j < 15; j++) {
int b;
i = n % 2;
b = n / 2;
n = b;
a[j] = i;
}
for (int j = 15; j >= 0; j--) {
cout << a[j];
if (j % 4 == 0)
cout << " ";
}
return 0;
}
在这个例子中,我们首先声明了一个整型数组a来存储每次对2取余的结果。然后,使用两个for循环分别进行转换和输出。第一个for循环用于将给定的十进制数转换为二进制数并存入数组a中,第二个for循环用于反向输出数组a中的取余结果。在输出中,每输出4个元素就加一个空格,以增加可读性。
请注意,此示例代码中的数组长度为16,可以处理最大为32767的十进制数。如果需要处理更大的整数,请相应地增加数组的长度。
c++十进制转二进制头歌
要将十进制数转换为二进制数,可以使用栈和队列来处理整数和小数部分。首先,将整数部分对2取余数,并将余数入栈,然后将整数部分除以2继续取余直到整数部分为0。最后,将栈中的元素出栈并输出,即可得到十进制数的二进制整数部分。接着,如果有小数部分,将小数部分乘以2,判断是否大于等于1,如果大于等于1,则减去1并将1入队,否则将0入队。重复这个过程直到小数部分为0。最后,将队列中的元素出队并输出,即可得到十进制数的二进制小数部分。
下面是一个C++的示例代码可以实现这个转换过程:
```c++
#include <iostream>
#include <stack>
#include <queue>
using namespace std;
void binary(double num) {
stack<int> list;
queue<int> listb;
int front = num;
double last = num - front;
if (front != 0) {
while (front != 0) {
if (front % 2 == 1) {
list.push(1);
front = (front - 1) / 2;
} else if (front % 2 == 0) {
list.push(0);
front = front / 2;
}
}
while (!list.empty()) {
cout << list.top();
list.pop();
}
} else {
list.push(0);
}
if (last != 0) {
cout << ".";
while (last != 0) {
last = last * 2;
if (last >= 1) {
last--;
listb.push(1);
} else {
listb.push(0);
}
}
while (!listb.empty()) {
cout << listb.front();
listb.pop();
}
}
cout << endl;
}
int main() {
int t;
cin >> t; while (t--) {
double num;
cin >> num;
binary(num);
}
}
```
以上代码可以实现将输入的十进制数转换为二进制数,并按独立的一行输出结果。在代码中,首先输入一个整数t表示需要转换的十进制数的个数,然后依次输入t个十进制数。运行代码后,会依次输出每个十进制数的二进制表示。