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
广告