用C语言找出一个数组中第一个含有1的元素,且找出这个元素二进制的第几位是第一个1,从最低位开始。比如说第一个元素是10010000,那么就是找到它的第5位是第一个1
9条回答 默认 最新
- 社区专家-Monster-XH 2023-02-21 07:49关注
基于Monster 组和GPT的调写:
可以使用位运算来解决这个问题。首先,遍历整个数组,找到第一个含有1的元素,然后使用位运算操作找到它的第一个1的位置。C实现代码:
#include <stdio.h> int main() { int arr[] = {0b10010000, 0b01000000, 0b00000000, 0b11001000}; int len = sizeof(arr) / sizeof(int); int first_one_element = -1; int first_one_position = -1; for (int i = 0; i < len; i++) { if ((arr[i] & 1) == 1) { // 找到第一个含有1的元素 first_one_element = arr[i]; // 找到第一个1的位置 for (int j = 0; j < 32; j++) { if ((first_one_element >> j) & 1) { first_one_position = j + 1; break; } } break; } } printf("第一个含有1的元素是 %d,它的第一个1出现在第 %d 位\n", first_one_element, first_one_position); return 0; }
在这个代码中,首先定义了一个包含一些测试数据的整型数组。然后使用循环遍历整个数组,当找到第一个含有1的元素时,就使用位运算找到第一个1的位置。最后,输出找到的结果。
这里假设一个整型变量占用32位本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报