C 語言程式:統計二進位制數中尾隨零和前導零的數量


首先,讓我們瞭解一下二進位制數中的尾隨零是什麼。

尾隨零

從最低有效位 (LSB) 開始,第一個 1 之後的所有 0 的位置稱為二進位制數中的尾隨零。

示例

104 是十進位制數

104 的二進位制數為:(MSB) 1101000(LSB)

這裡,

  • MSB 指的是最高有效位。
  • LSB 指的是最低有效位。
  • 從 LSB 開始,第一個 1 之後有三個 0。
  • 尾隨零的數量為三個。

示例

下面是計算給定數字的尾隨零數量的程式:

 線上演示

#include<stdio.h>
#include<stdlib.h>
int main(){
   int number, i, trail = 0, size;
   printf("Enter a number
");    scanf("%d",&number);    size = sizeof(number) * 8;    for(i = 0; i < size; i++){       if((number >> i) & 1) {          break;       }       trail++;    }    printf("Number of trailing ZERO is = %d", trail);    return 0; }

輸出

執行上述程式時,將產生以下結果:

Enter a number
24
Number of trailing ZERO is = 3

前導零

如果 0 **位於設定為 1 的位之前**,則它們被稱為前導零。

示例

94 是十進位制數。

94 的二進位制數為:(MSB) .....001011110(LSB)

前導零的數量 = 25

程式

下面是計算給定數字的前導零數量的程式。

 線上演示

#include<stdio.h>
#include<stdlib.h>
int main(){
   int number, i, lead = 0, Msb,size;
   printf("Enter a number
");    scanf("%d",&number);    size = sizeof(number) * 8;    Msb=1<<(size-1);    for(i = 0; i < size; i++){       if((number << i) & Msb) {          break;       }       lead++;    }    printf("Number of Leading ZERO is = %d", lead);    return 0; }

輸出

執行上述程式時,將產生以下結果:

Enter a number
94
Number of Leading ZERO is = 25

更新於: 2021年3月24日

2K+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.