精华内容
下载资源
问答
  • 实现函数将 unsigned int 整型数值转为点分十进制记法表示: 点分十进制(Dotted Decimal Notation)全称为点分式)十进制表示法, 是IPv4的IP地址标识方法。 IPv4中用四个字节表示一个IP地址,每个字节按照十...

    /*题目3:(简答题:10.0分)
    实现函数将 unsigned int 整型数值转为点分十进制记法表示:
    点分十进制(Dotted Decimal Notation)全称为点分(点式)十进制表示法,
    是IPv4的IP地址标识方法。
    IPv4中用四个字节表示一个IP地址,每个字节按照十进制表示为0~255。
    点分十进制就是用4个从0~255的数字,来表示一个IP地址。
    char * my_DotDec(unsigned int ip,char *buffer);
    参数说明:
    value:欲转换的数数值。
    buffer:目标字符串的地址。
    示例: ip = 2148205343; buffer = “128.11.3.31”;

    注意,无符号整形变量命名,不然一天就过去了

    #include <iostream>
    #include <ctype.h>
    #include <stack>
    
    using  namespace  std;
    
    
    char my_itoa_single(int p,int radix)
    {
        if(radix == 16 && p >= 10)
        {
            return p + 'W';
        }
        else
        {
            return p + '0';
        }
    }
    
    void my_itoa(unsigned value, char *buffer, int radix)
    {
        char * p = buffer;
        unsigned itmp = 0;
        char ctmp;
        stack<char> sta;
        if(radix != 10)
        {
            *p = '0';
            ++p;
            if(radix == 16)
            {
                *p = 'X';
                ++p;
            }
        }
        while(value)
        {
            itmp = value%radix;
            value = value/radix;
            ctmp = my_itoa_single(itmp,radix);
            sta.push(ctmp);
        }
        while(!sta.empty())
        {
            *p = sta.top();
            sta.pop();
            ++p;
        }
    }
    
    
    //10进制数转2进制,并保存在bool类型数组中
    void DEC_to_BIN(unsigned int value, bool *buffer)
    {
        bool * p = buffer;
        bool itmp = 0;
        stack<bool> sta;
        while(value)
        {
            itmp = value%2;
            value = value/2;
            sta.push(itmp);
        }
        while(!sta.empty())
        {
            *p = sta.top();
            sta.pop();
            ++p;
        }
    }
    
    //二进制数转成无符号整型
    unsigned int  BIN_to_UIN(bool *p)
    {
        stack<bool> sta;
        unsigned int sum = 0;
        unsigned int tmp = 0;
        int i ,j;
        for(i = 0;i < 8;++i)
        {
            sta.push(*p);
            ++p;
        }
        for(i = 0; i < 8;++i)
        {
            tmp = sta.top();
            sta.pop();
            for(j = 0;j < i;++j)
            {
                tmp = tmp * 2;
            }
            sum += tmp;
        }
        return sum;
    }
    
    //unsigned int 整型数值转为点分十进制记法
    void  UIN_to_DDN(unsigned int value, char *IP_address)
    {
        bool buffer[32] = {0};
        DEC_to_BIN(2148205343, buffer);
        bool *p = buffer;
        char *q = IP_address;
        unsigned int tmp = 0;
        for(int i = 0;i < 4;++i)
        {
            tmp = BIN_to_UIN(p);
            my_itoa(tmp,q,10);
            while(*q != '\0')
            {
                ++q;
            }
            *q = '.';
            ++q;
            p = p + 8;
        }
        --q;
        *q = '\0';
    }
    
    int main()
    {
        bool buffer[32] = {0};
        char IP_address[16] = {0};
        DEC_to_BIN(2148205343, buffer);
        for(int i = 0;i < 32;i++)
        {
            printf("%d",buffer[i]);
        }
        printf("\n");
        printf("%d\n",BIN_to_UIN(buffer));
        UIN_to_DDN(2148205343,IP_address);
        printf("%s\n",IP_address);
        return 0;
    }
    
    
    展开全文
  • IP 点分十进制表示

    千次阅读 2019-08-12 02:22:42
    如果用二进制表示IP地址的话,A类IP地址就由1字节的网络地址和3字节主机地址组成,网络地址的最高位必须是“0”。A类IP地址中网络的标识长度为7位,主机标识的长度为24位,A类网络地址数量较少,可以用于主机数达...
    A类IP地址   
    一个A类IP地址是指, 在IP地址的四段号码中,第一段号码为网络号码,剩下的三段号码为本地计算机的号码。如果用二进制表示IP地址的话,A类IP地址就由1字节的网络地址和3字节主机地址组成,网络地址的最高位必须是“0”。A类IP地址中网络的标识长度为7位,主机标识的长度为24位,A类网络地址数量较少,可以用于主机数达1600多万台的大型网络。   A类IP地址 地址范围1.0.0.1-126.255.255.254(二进制表示为:00000001 00000000 00000000 00000001 - 01111110 11111111 11111111 11111110)。   
    B类IP地址    
    一个B类IP地址是指,在IP地址的四段号码中,前两段号码为网络号码,。如果用二进制表示IP地址的话,B类IP地址就由2字节的网络地址和2字节主机地址组成,网络地址的最高位必须是“10”。B类IP地址中网络的标识长度为14位,主机标识的长度为16位,B类网络地址适用于中等规模的网络,每个网络所能容纳的计算机数为6万多台。   B类IP地址地址范围128.1.0.1-191.254.255.254(二进制表示为:10000000 00000001 00000000 00000001 - 10111111 11111110 11111111 11111110)。    
    C类IP地址    
    一个C类IP地址是指,在IP地址的四段号码中,前三段号码为网络号码,剩下的一段号码为本地计算机的号码。如果用二进制表示IP地址的话,C类IP地址就由3字节的网络地址和1字节主机地址组成,网络地址的最高位必须是“110”。C类IP地址中网络的标识长度为21位,主机标识的长度为8位,C类网络地址数量较多,适用于小规模的局域网络,每个网络最多只能包含254台计算机。   C类IP地址范围192.0.1.1-223.255.254.254(二进制表示为: 11000000 00000000 00000001 00000001 - 11011111 11111111 11111110 11111110)。   
    除了以上三种类型的IP地址外,还有几种特殊类型的IP地址,TCP/IP协议规定,凡IP地址中的第一个字节以“lll0”开始的地址都叫多点广播地址。因此,任何第一个字节大于223小于240的IP地址是多点广播地址;IP地址中的每一个字节都为0的地址(“0.0.0.0”)对应于当前主机;IP地址中的每一个字节都为1的IP地址(“255.255.255.255”)是当前子网的广播地址;IP地址中凡是以“llll0”的地址都留着将来作为特殊用途使用;IP地址中不能以十进制“127”作为开头,该类地址中数字127.0.0.1到127.1.1.1用于回路测试,同时网络ID的第一个6位组也不能全置为“0”,全“0”表示本地网络。D类IP地址第一个字节以“1110”开始,它是一个专门保留的地址。它并不指向特定的网络,目前这一类地址被用在多点广播(Multicast)中。多点广播地址用来一次寻址一组计算机,它标识共享同一协议的一组计算机。地址范围224.0.0.1-239.255.255.254 。E类IP地址以“11110”开始,保留用于将来和实验使用。

    转载于:https://www.cnblogs.com/opaljc/archive/2011/09/16/2178283.html

    展开全文
  • 将ip地址转换为点分十进制表示

    千次阅读 2020-07-04 20:29:36
    实现函数将 unsigned int 整型数值转为点分十进制记法表示: 点分十进制(Dotted Decimal Notation)全称为点分式)十进制表示法, 是IPv4的IP地址标识方法。 IPv4中用四个字节表示一个IP地址,每个字节按照十...

    将ip地址转换为点分十进制表示

    题目描述:

    实现函数将 unsigned int 整型数值转为点分十进制记法表示:
    点分十进制(Dotted Decimal Notation)全称为点分(点式)十进制表示法,
    是IPv4的IP地址标识方法。
    IPv4中用四个字节表示一个IP地址,每个字节按照十进制表示为0~255。
    点分十进制就是用4个从0~255的数字,来表示一个IP地址。
    char * my_DotDec(unsigned int ip,char *buffer);
    参数说明:
    value:欲转换的数数值。
    buffer:目标字符串的地址。
    示例: ip = 2148205343; buffer = “128.11.3.31”;

    分析:

    灵活地利用联合体内存共享的特点
    题目中要求将数字转换成字符串,我们就要想到使用sprintf函数,

    代码:

    union IPNode
    {
     unsigned int addr;
     struct
     {
      unsigned char s1;
      unsigned char s2;
      unsigned char s3;
      unsigned char s4;
     };
    };
    char* my_DotDec(unsigned int ip,char *buffer)
    {
     IPNode x;
     x.addr = ip;      
     sprintf(buffer,"%d.%d.%d.%d",x.s4,x.s3,x.s2,x.s1); 
     return buffer;         
    }
    

    注意事项:

    windows系统下栈是在低地址,堆在高地址栈和堆从中间向两头扩展,LINUX系统上是从两头向中间扩展,pc端是小端–低地址存放低数据而x又是从堆上开辟的(因为结构体的定义是在函数的外面,如果结构体定义在函数内部就是从栈上开辟),堆是由低地址向高地址开辟内存,所以s4在高地址,存放的是大数据。sprintf函数的第一个参数是字符串的输入指向char指针型,第二个参数是控制输入的字符的形式(%d,%f,%0x,%x),用“ ”括起来,第三个参数是输入的数据。

    展开全文
  • 今天听白杨师姐讲管理自己的知识系统,第一次听说了杜威十进制分类。百度找到这个解释,还是不太明白跟我有什么关联。继续往下,看到了具体分类。他把人类能接触到的所有知识分为10个大类,每个大类之间保持100...

    今天听白杨师姐讲管理自己的知识系统,第一次听说了杜威十进制分类法。

    c06ba0b9413d

    百度找到这个解释,还是不太明白跟我有什么关联。继续往下,看到了具体分类。他把人类能接触到的所有知识分为10个大类,每个大类之间保持100位数的间隔。

    c06ba0b9413d

    以第一大类计算机科学、资讯与总类为例。这个大类列出了100个小类,包含了所有计算机有关的信息与知识。

    c06ba0b9413d

    看到这里我才明白,杜威十进制法是告诉我们,知识可以用数字框架法来归类、整理。这些知识可以是学到的新观点、收藏的好文章、突然冒出来的好点子。以前是需要用笔和本子记录,费时费力,而且很多东西来不及手记,现在用手机想记就记。

    c06ba0b9413d

    手机记录快捷方便,但容易造成堆集。做好详细的分类,细致的整理,对我们的工作会事半功倍。就像房间一样,分门别类整理好各类物件,用的时候按顺序很快找到,不用思索上次用完放哪了,也不用到处翻箱倒柜,省时省精力。井然有序不仅让人心情愉悦,还可以把有限的时间和精力,用去创造更多的价值,这也是高效人生的体现。

    c06ba0b9413d

    我最近刚刚开始用有道云笔记,没有分类整理,全是随意保存的。

    TO DO

    1、学会操作有道云笔记;

    2、用五环法(学、思、做、教、赢)来搭建管理自己的知识库。

    展开全文
  • 【IPv4】十进制点分表示转换

    千次阅读 2020-10-29 22:07:26
    IPv4 十进制点分表示转换 文章目录IPv4 十进制点分表示转换一. IPv4 地址表示二. 二进制表示转换为十进制点分 一. IPv4 地址表示 二. 二进制表示转换为十进制点分 文章名称 文章链接 IPv4 十进制...
  • 实现函数将点分十进制表示的字符串转换为 unsigned int 整型数值 unsigned int my_ResDotDec(const char *strip); 参数说明:strip 点分十进制表示的字符串; 示例: strip =“128.11.3.31” ; 返回值: 2148205343; ...
  • 十进制记法中,它能表示的范围为从010 to 25510。这两种记法都不适合描述位模式。二进制太冗长,在位模式和十进制之间来回转换十分麻烦。于是,我们用十六进制整数来写位模式。十六进制用数字0到9和字母和字符A到F...
  • 点分十进制字符串IP和32位int整数互转Java实现 比较简单基础的题,可记录和回顾基础。 IPv4(4*8)和32位的int整数刚好可以11映射,但由于int整数是有符号的,所以不能直接通过划分为四个整数,然后乘以权值(256^(0-3...
  • 十进制负数的二进制表示

    千次阅读 2018-04-04 11:22:36
    ...十进制转正整数转二进制应该都会,用C语言代码简单表示算法: #include&amp;amp;lt;stdio.h&amp;amp;gt; int main() { int dec=65535; /*positive decimalism number to binary ...
  • Java学习日记查表法十进制转十六进制  心得写在注释里面,代码如下: public static void toHex(int num)  {  char[] str={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};//制表,自动...
  • * 将十进制转化为其他进制的数值 * * @param num 需要转化的数值 * @param base 每次比较位数的规定值(二进制为1位,八进制为3位,十六进制为4位) * @param move 所需右移位数 */ void change(int num, int ...
  • 我们经常要分析以点分十进制记法表示的地址的一个二进制八位数。网络比特位和主机比特位用一个二进制八位数就属于这种情况。 例如,若地址为 172.16.4.20 的主机使用 28 个比特位来代表网络地址,我们就需要...
  • 进制转换进制转换十进制转二进制 及 二进制转十进制二进制转八进制 及 八进制转十进制二...十进制转二进制采用“模二取余”。 52除以2,为26,无余数,0。26除以2,为13,无余数,0。13除以2,6余1,1...
  • Q1:C语言编程,输入十进制数输出十六进制和八进制可以通过下面的公式解决#includeconst int maxn = 128;const int index8 = 8;const int index16 =16;int main(){int Array8[maxn];int Array16[maxn];int n, cot8 =...
  • 计算机中十进制转换为二进制的另一方法-------“定位减权法”胡燏(四川建筑职业技术学院计算机系,618000)【摘要】本文从十进制与二进制的特点入手,介绍一种把十进制数转换为二进制的新方法。【关键字】十进制 二...
  • 除2取余倒记法:用2连续去除十进制整数,直到商为零为止,然后逆序排列余数,便得到相对应的二进制数。例如: 按照除二取余倒记法十进制整数136的二进制为10001000 二、十进制转换十六进制 常用数制对照表如下 ...
  • java: 查表十进制整数转换成二进制、八进制、十六进制
  • 错误代码:SQLCODE=-419 十进制运算无效  select a.ywl,rs.rs from temp a; 然后执行的语句:select a.ywl/rs.rs from temp a 就会报以上的错误   通过各种博客记录,提出报错信息的博客很...
  • 十进制转为二进制

    2020-06-28 21:51:00
    十进制转化为二进制 转化规则 一般十进制数有整数部分和小数部分组成,两个部分其转化规则是不相同的。因此首先把十进制数的两个部分分开来。 整数部分:通过除二取余法将余数倒序记录下来,直到除到0 小数部分:...
  • 1.十进制转换为R进制 都是使用除数取余法来转换,结果按倒序来 a.十进制转换为二进制,就一直除以2,直到余数比2小,不能除为止。 b.十进制转换为八进制,就一直除以8,直到余数比8小,不能除为止。 c.十进制转换...
  • 二进制表示太冗长 , 而十进制表示与位模 式 的互相转化很麻烦 。 替代的方法是,以 16为基数 , 或者叫做十 六进制 (hexadecimal)数 , 来表示位模式 。 十六进制 ( 简写 为 “hex") 使用数字 0——9 以 及...
  • 十六进制表示进制转换)

    千次阅读 2019-03-10 22:30:00
    本篇文章记录十六进制表示,以及与十进制、二进制之间的转换方法。十进制的数字表示我们日常生活中一直在使用,在计算机中使用二进制表示。计算机系统中一个使用字节作为基本的读写单位,一个字节由8位组成。 ...
  • 十进制整数转换为二进制整数采用"除2取余,逆序排列"。具体做法是:用2整除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为小于1时为止,然后把先得到的余数作为二进制...
  • Python3实现十进制转为其它进制

    千次阅读 2019-01-25 15:37:09
    Python3实现十进制转为其它进制一、Python3迭代方法实现十进制转为其它进制二、Python3递归方法实现十进制转为其它进制三、参考资料 一、Python3迭代方法实现十进制转为其它进制 利用连续相除, 保存商和余数,...
  • 二进制转十进制 二进制转十进制 做法 由二进制数转换成十进制数的基本做法是,把二进制数首先写成加权系数展开式,然后按十进制加法规则求和。这种做法称为"按权相加"。 步骤 ...
  • 十进制转二进制 注:用短除取余数,并从下往上记录结果。 十进制转十六进制 方法1:直接用十进制转二进制的方法,把除数换成16计算即可 方法2:先把十进制转换为二进制,再把二进制转换为十六进制 注:二...
  • 十进制二进制转换

    2013-01-21 14:20:00
    二进制转十进制 二进制的1101转化成十进制 ...相反 用十进制的数除以2 每除一下将余数就在旁边 最后按余数从下向上排列就可得到1101或者用下面这种方法: 13=8+4+0+1=8+4+1(算出等于13就...
  • 一、二进制 十进制和十六进制 X进制 逢X进1 数制的计算 二、数制的转换 十进制--->二进制 十进制--->十六进制 二进制--->十进制 二进制--->十六进制 十六进制--->二进制 十六进制--->...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 50,724
精华内容 20,289
关键字:

点分十进制记法