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+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告