tanglyde 2023-02-21 07:41 采纳率: 37.5%
浏览 85
已结题

用C语言找出数组中二进制元素的第一位1

用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位

    展开全部

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(8条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 3月1日
  • 已采纳回答 2月22日
  • 创建了问题 2月21日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部