计算子网掩码?

发布于 2024-10-04 03:09:03 字数 68 浏览 4 评论 0原文

我如何计算IP地址为128.2.19.4并且属于子网128.2.19.0/25的子网掩码。请给我详细的过程。我想学习计算。

how can i calculate the subnet mask having ip address 128.2.19.4 and belong to the subnet 128.2.19.0/25.please give me the detail procedure.i want to learn to calculate.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

毁我热情 2024-10-11 03:09:03

以下是您的示例的算法:

子网掩码只是子网地址的“/25”部分的表示。

在 IPv4 中,地址长度为 32 位,其中前 25 位为 1:

1111 1111 1111 1111 1111 1111 1000 0000  

地址以八位字节形式给出 - 每个八位字节为 8 位:

octet 1  .    octet 2  .    octet 3  .    octet 4
0000 0000     0000 0000     0000 0000     0000 0000 
1111 1111     1111 1111     1111 1111     1000 0000

因此每个八位字节的十进制表示形式为:

255      .    255      .    255      .    128       

这意味着您的子网掩码为:

255.255.255.128

Here's the algorithm with your example:

The subnet mask is just a representation of the "/25" part of your subnet address.

In IPv4, addresses are 32 bits long, the first 25 bits of which are ones:

1111 1111 1111 1111 1111 1111 1000 0000  

addresses are given in octets -- 8 bits each:

octet 1  .    octet 2  .    octet 3  .    octet 4
0000 0000     0000 0000     0000 0000     0000 0000 
1111 1111     1111 1111     1111 1111     1000 0000

So a decimal representation of each octet is:

255      .    255      .    255      .    128       

That means that your subnet mask would be:

255.255.255.128

So尛奶瓶 2024-10-11 03:09:03

子网掩码是位掩码。 25 表示 32 位中的 25 位(从顶部开始)用于网络,其余用于主机。

In bytes:    128.2.19.0
In binary    10000000 00000010 00010011 00000000
The bitmask: 11111111 11111111 11111111 10000000
Ergo:        ------- network ------------  host

最后 7 位用于主机。位掩码(字节)为 255.255.255.128。

The subnet mask is a bitmask. 25 means that 25 out of 32 bits (starting from the top) is used for the network, and the rest for the hosts.

In bytes:    128.2.19.0
In binary    10000000 00000010 00010011 00000000
The bitmask: 11111111 11111111 11111111 10000000
Ergo:        ------- network ------------  host

The last 7 bits are used for hosts. The bitmask as bytes is 255.255.255.128.

三生一梦 2024-10-11 03:09:03

中执行此操作的方法:

#include <stdio.h>
#include <arpa/inet.h>

uint32_t cidr_to_netmask(uint8_t cidr)
{
  uint8_t unset_bits = 32 - cidr;
  return ntohl(0xffffffff << unset_bits);
}

int main(void)
{
    uint8_t cidr = 25;

    uint32_t _netmask = cidr_to_netmask(cidr);
    struct in_addr _netmask_addr = { _netmask };

    char netmask[16];
    if (inet_ntop(AF_INET, (struct in_addr *)&_netmask_addr, (char *)&netmask, sizeof(netmask)) == NULL) { 
      fprintf(stderr, "error.\n"); 
      return 1; 
    }

    printf("%d = %s\n", cidr, netmask);

    return 0;
}

以下是在 C:输出

25 = 255.255.255.128

Here's how you can do it in C:

#include <stdio.h>
#include <arpa/inet.h>

uint32_t cidr_to_netmask(uint8_t cidr)
{
  uint8_t unset_bits = 32 - cidr;
  return ntohl(0xffffffff << unset_bits);
}

int main(void)
{
    uint8_t cidr = 25;

    uint32_t _netmask = cidr_to_netmask(cidr);
    struct in_addr _netmask_addr = { _netmask };

    char netmask[16];
    if (inet_ntop(AF_INET, (struct in_addr *)&_netmask_addr, (char *)&netmask, sizeof(netmask)) == NULL) { 
      fprintf(stderr, "error.\n"); 
      return 1; 
    }

    printf("%d = %s\n", cidr, netmask);

    return 0;
}

Output:

25 = 255.255.255.128
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文