ukoXD 2021-05-26 23:21 采纳率: 100%
浏览 16
已采纳

C语言位运算,关于接收byte数中位运算问题

#include <stdio.h>
int main()
{
    int n;
    while(scanf("%d",&n)!=EOF)
    {
        int a[8]={0};
        for(int i=0;i<8;i++)
        {
            if(n&(1<<i)) a[i] = 1;
        }
        int count=0;
        int max=0;
        for(int i=0;i<8;i++)
        {
            if(a[i]==1)
                count++;
            else
                count=0;
            max=max>count?max:count;
        }
        printf("%d\n",max);
    }
}

对于代码段中,这个n&(1<<i),虽然知道是i左移,然与n进行and运算,但是对于具体操作流程还是不是特别理解,希望有大佬相助

  • 写回答

2条回答 默认 最新

  • qfl_sdu 2021-05-26 23:52
    关注

    一个int 是4个字节,比如1是0x00000001,转换为二进制就是:

    0000 0000 0000 0000 0000 0000 0000 0001

    左移一位后就是(左移1位相当于乘以2):

    0000 0000 0000 0000 0000 0000 0000 0010

    两个int进行&操作,就按照上面的方式转换成二进制,按位进行与操作。

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

报告相同问题?

悬赏问题

  • ¥30 Unity接入微信SDK 无法开启摄像头
  • ¥20 有偿 写代码 要用特定的软件anaconda 里的jvpyter 用python3写
  • ¥20 cad图纸,chx-3六轴码垛机器人
  • ¥15 移动摄像头专网需要解vlan
  • ¥20 access多表提取相同字段数据并合并
  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算
  • ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
  • ¥20 有人知道这种图怎么画吗?
  • ¥15 pyqt6如何引用qrc文件加载里面的的资源