#include <math.h>
#include <string.h>
/* 整数转换为 二进制数 */
int get_bit(int num, int *bit, int index)
{
int ret = 0;
for(int i = index; i < index + 8; i++)
{
/* 每8位 将高低位互换 */
bit[index + 8 - 1 - i + index ] = num % 2;
num /= 2;
}
return ret;
}
int main()
{
int bit[32];
int ip[4] = {0};
long ip_num = 0;
int index = 0;
/* 转IP 转10进制 */
if(scanf("%d.%d.%d.%d", &ip[0], &ip[1], &ip[2], &ip[3]) != EOF)
{
int index = 0;
int i = 0;
for(int i = 0; i < 4; i++)
{
int num = 0;
get_bit(ip[i], bit, i * 8);
}
for(int j = 0; j < 32; j++)
{
/* 数组中,i=0数据 为高位,高位-》地位 */
ip_num += pow(2, 32 - 1 - j) * bit[j];
}
printf("%ld\n", ip_num);
}
/* 10进制 转IP */
ip_num = 0;
index = 0;
int ip_size = 0;
int data[4];
if(scanf("%ld", &ip_num) != EOF)
{
while(ip_num)
{
int mod = ip_num % 2;
bit[index++] = mod;
ip_num /= 2;
if(index == 8 || ip_num == 0)
{
int num = 0;
for(int i = 0; i < 8; i++)
{
num += (int)pow(2, i) * bit[i];
}
data[ip_size++] = num;
index = 0;
memset(bit, 0, sizeof(bit));
}
}
}
for(int i = 0; i < ip_size; i++)
{
printf("%d", data[ip_size - 1 - i]);
if(i < ip_size - 1)
{
printf(".");
}
}
return 0;
}