給定二進位制字串的十進位制表示是否可被 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 程式設計程式碼。

更新於: 2023年8月23日

64 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.