输出总是不对 是哪里有问题

img


#include
using namespace std;
int main()
{
    int L,R,sum=0,j=0;
    cin>>L>>R;
    int a[100000];
    int b[100000];
    for(int i=0;i<=R-L;i++)
    {
        a[i]=L;
        L++;
    }
    for(int i=0;i<=R-L;i++)
  {
        while (i<=R-L)
        {
            b[j]=a[i]%2;
            if(b[j]==1) {sum++;}
            a[i]=a[i]/2;
            j++;
            if(a[i]==0) break;

        }
  }
    cout<

img


代码检查了一下感觉没啥问题 但是输出总是不对 代码要怎么改进


#include <iostream>
using namespace std;
int main()
{
    int L, R, sum = 0, j = 0;
    cin >> L >> R;
    while (L <= R)
    {
        j = L;
        while(j)
        {
            sum += j % 2;
            j /= 2;
        }
        L++;
    }
    cout << sum << endl;
}