一个IP地址由32位二进制的数组成,比如:
111111111111111111111111000000002
为了便于记忆,我们将8个二进制位用一个十进制数表示,一个IP地址由四个十进制数表示,上述的IP地址表示为:
255.255.255.0
现在给你一个上述形式的IP地址,请回答IP地址的32个二进制位中,有多少位是1。
如IP地址为255.255.255.0,其中24位是1。
#include<iostream>
#include<sstream>
using namespace std;
int main()
{
int T;cin>>T;
for(int time=0;time<T;time++)
{
string s;cin>>s;
stringstream in(s);
int m[8]={0};
int a,c=7,count=0;
in>>a;
while(a)
{
m[c--]=a%2;
a=a/2;
}
for(int i=0;i<8;i++)
if(m[i]==1) count++;
for(int x=0;x<3;x++)
{
int n[8]={0},b,d=7;
in.ignore(100,'.');
in>>b;
while(b)
{
n[d--]=b%2;
b=b/2;
}
for(int i=0;i<8;i++)
if(n[i]==1) count++;
}
cout<<count<<endl;
}
}