进制问题啊 ip的进制问题
发布网友
发布时间:2022-05-18 01:30
我来回答
共2个回答
热心网友
时间:2023-10-03 05:32
你好,在二进制里面是没有2的只有0和1
给你举个简单的加法例子 在二进制里1+1=2但是逢二进一所以1+1=10再加1就是11再加1就是100
转换8进制和16进制可以借助二进制来进行转换
转8进制从后往前3为成为一个单元,不足三位的用0来补
例如:10101101-->从右往左三位一个单元 010 101 101 然后再把这三段转成10进制就是刚才那个二进制所对应的八进制
如果不懂给我发邮件,然后我们qq聊
转16进制,和转8机制一样也是借助二进制来转换,只不过不同点在于它是4位为一个单元
例如:10101101->从右向左4位为一个单元不足的用零来不,不过记住只能在最左边补
转换后为 1010 1101在转成十进制就是那个二进制所对应的十六进制
热心网友
时间:2023-10-03 05:33
#include <stdio.h>
#include <string.h>
main()
{
unsigned long i1,i2,i3,i4; //这个要改成long
unsigned long ip; //同上
int i;
char ip_str[20]=,bin_str[33]=;
scanf("%s",ip_str);
sscanf(ip_str,"%d.%d.%d.%d",&i1,&i2,&i3,&i4);
ip=(i1<<24)+(i2<<16)+(i3<<8)+i4;//实在不行,这里可以在每个移位前强制转换成long型
for(i=31;i>=0;i--)sprintf(bin_str,"%s%d",bin_str,(ip&(1<<i))>>i);
printf(" IP(dec):%s \n IP(hex):%X \n IP(bin):%s\n",ip_str,ip,bin_str);
}