语言 十进制转二进制的辗转相取余法代码
时间: 2023-04-06 18:03:26 浏览: 190
以下是十进制转二进制的辗转相除法的代码:
```
#include <stdio.h>
void decimalToBinary(int decimal) {
int binary[32];
int i = 0;
while (decimal > 0) {
binary[i] = decimal % 2;
decimal = decimal / 2;
i++;
}
for (int j = i - 1; j >= 0; j--) {
printf("%d", binary[j]);
}
}
int main() {
int decimal;
printf("请输入一个十进制数:");
scanf("%d", &decimal);
printf("转换为二进制数为:");
decimalToBinary(decimal);
printf("\n");
return 0;
}
```
希望能对您有所帮助。
相关问题
完善十进制转二进制算法
将一个十进制数转换为二进制数,常用的算法是“除2取余法”,也称为“短除法”或“辗转相除法”。具体步骤如下:
1. 将十进制数不断除以2,得到的商再继续除以2,直到商为0为止。
2. 将每一步得到的余数倒序排列,就是该十进制数的二进制表示。
举个例子,将十进制数23转换为二进制数的过程如下:
23 ÷ 2 = 11 余 1
11 ÷ 2 = 5 余 1
5 ÷ 2 = 2 余 1
2 ÷ 2 = 1 余 0
1 ÷ 2 = 0 余 1
将每一步得到的余数倒序排列,得到的就是23的二进制表示:10111。
需要注意的是,由于二进制是以2为基数,因此每一位上的权值都是2的幂次方,从右到左依次为1、2、4、8、16......所以在转换的过程中,可以顺便计算每一位上的权值。
请编写一个函数,利用 辗转除2取余法(注意:不要使用int()的直接转换) 实现将我们常见的十进制IPv4地址例如203.179.25.37转换为32位长的二进制地址。
def ipv4_to_binary(ipv4):
ipv4_list = ipv4.split('.')
binary_list = []
for num in ipv4_list:
binary = ''
while int(num) > 0:
remainder = str(int(num) % 2)
binary = remainder + binary
num = str(int(num) // 2)
binary = '0' * (8 - len(binary)) + binary # 补齐8位
binary_list.append(binary)
binary_ip = ''.join(binary_list)
return binary_ip
print(ipv4_to_binary('203.179.25.37')) # 输出 11001011101100110001100100100101
阅读全文