给定二进制字符串的十进制表示是否可被 20 整除
在本文中,我们面临的挑战是确定给定二进制数的十进制形式是否可以被 20 整除。以 2 为底的数字系统,通常称为二进制数字系统,是一种在数学中使用仅两个符号(通常为“0”(零)和“1”(一))来表示数字的方式。例如,十进制数 4 在二进制形式中表示为 100。十进制数 6 的二进制形式为 110。十进制数 28 的二进制表示为 11100。现在想想十进制数 1,23,45,687 如何表示为二进制数?
请注意,数字可能非常大,甚至可能无法容纳在 long long 整数中。这里的策略应该确保除法和乘法运算的次数为零或尽可能少。输入不包含任何前导零。
方法
我们首先将二进制数转换为其等效的十进制表示形式。为了将任何二进制数转换为十进制数,我们必须从 0 开始将二进制数的每一位乘以 2 的幂,然后将结果相加以获得十进制数。
获得二进制数的十进制表示后,我们就可以使用模运算符(%)来确定它是否可以被 20 整除。通过应用模运算符,我们取余数。如果余数为 0,则该数可以被 20 整除。否则,如果余数为 0 以外的任何数字,则给定数字不能被 20 整除。
如果十进制等价物可以被 20 整除,则二进制整数确实可以被 20 整除。
问题陈述
检查给定二进制字符串的十进制表示是否可以被 20 整除。
示例 1
让我们取二进制数 101000。
十进制表示为 40。
说明:(32*1)+(16*0)+(8*1)+(4*0)+(2*0)+(1*0)= 32 + 8,结果为 40。
由于 40 可以被 20 整除,因此二进制数 101000 可以被 20 整除。
示例 2
让我们取二进制数 11110。
十进制表示为 30。
说明:(16*1)+(8*1)+(4*1)+(2*1)+(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:停止
示例
下面给出 C 程序,用于检查二进制数的十进制形式是否可以被 20 整除。
#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 编程代码。