题目要求:
有一组十六比特的二进制数组,需要找出0出现的位置(在最低位出现时),如110011,则输出2
思路:可以将一组二进制数存入到数组中,然后遍历数组,用每一位去与1进行与运算,若为0,则表示出现了0,则输出此时的位置。
给出代码如下:
/*
* @Author: yaohao
* @Date: 2022-08-06 16:04:47
* @Last Modified by: yaohao
* @Last Modified time: 2022-08-06 17:22:06
*/
#include <stdio.h>
#include <stdlib.h>
int main() {
int a[16];
int j = 0;
int n;
int k=15;
printf("please input bit value\n");
for(int k=15; k>=0; k--)
scanf("%d", &a[k]);//输入一组数据
n = sizeof(a)/sizeof(a[0]);
//判断是否为0,通过与1相与,若为0则该数为0
for(int i = 0; i < n; i++) {
if ((a[i] && 1) == 0) {
j = i;
break;
}
}
//return j;
printf("low bit 0 is:%d", j);
system("pause");
return 0;
}