C++ 给定二进制字符串的十进制表示可以被20整除吗
在本文中,我们接受挑战来确定给定的二进制数的十进制形式是否可以被20整除。二进制数系统,通常称为二进制数系统,是一种在数学中表示数字的方式,只使用两个符号,通常为”0″(零)和”1″(一)。例如,十进制数4用二进制形式表示为100。十进制数6的二进制形式为110。十进制数28的二进制表示为11100。现在想象一下,十进制数1,23,45,687可以如何表示为二进制数呢?
要小心,因为数字可能非常大,甚至可能无法适应长长整数。这里的策略是确保除法和乘法操作的次数要么为零,要么尽可能少。输入不包含任何前导零。
方法
我们首先将二进制数转换为其等价的十进制表示形式。为了将任何二进制数转换为十进制数,我们必须将二进制数的每个数字(从0开始)乘以2的幂,然后将结果相加以获得十进制数。
在我们获得二进制数的十进制表示之后,我们可以使用模运算符(%)来确定它是否可以被20整除。通过应用模运算符,我们取得余数。如果余数为0,则该数可以被20整除。否则,如果余数为非零数,则给定的数不可被20整除。
如果十进制等价数可以被20整除,则二进制整数确实可以被20整除。
问题陈述
检查给定二进制字符串的十进制表示是否可以被20整除。
例子1
让我们取二进制数101000。
十进制表示为40。
解释:(321) + (160) + (81) + (40) + (20) + (10) = 32 + 8,得到40。
由于40可以被20整除,二进制数101000可以被20整除。
例子2
让我们取二进制数11110。
十进制表示为30。
解释:(161) + (81) + (41) + (21) + (1*0) = 16 + 8 + 4 + 2,得到30。
由于30不能被20整除,二进制数11110不能被20整除。
算法
以下是检查给定二进制字符串的十进制表示是否可以被20整除的算法。
步骤1: 开始
步骤2: 输入二进制数
步骤3: 定义变量dec=0,i和r(r为余数)
第4步 :将给定的二进制数转换为十进制形式。
第5步 :通过取模运算符(%)检查十进制数是否能被20整除。
第6步 :打印输出结果。
第7步 :停止运行。
示例
下面是一个检查二进制数的十进制形式能否被20整除的C程序。
#include <stdio.h>
#include <math.h>
// Checking whether the number is divisible by 20
// and printing the necessary output message
int convert(long long);
int main()
{
long binNum=101000;
printf("The decimal representation of 101000 is %d",convert(binNum));
if (convert(binNum) % 20 == 0) {
printf("\nIt is divisible by 20");
} else {
printf("\nNot divisible by 20");
}
return 0;
}
// function to convert binary number into its decimal form
int convert(long long binNum)
{
int dec = 0, i = 0, r;
while (binNum!=0) {
r = binNum % 10;
binNum /= 10;
dec += r * pow(2, i);
++i;
}
return dec;
}
输出
执行后,将产生以下输出:
The decimal representation of 101000 is 40
It is divisible by 20
结论
同样地,我们可以通过输入二进制数来确定给定二进制字符串的十进制表示是否可以被20整除。
本文解决了确定给定二进制字符串的十进制表示是否可以被20整除的挑战。这里提供了C编程代码。