<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Subnetting berechnung mit C++]]></title><description><![CDATA[<p>Hallo,</p>
<p>hab folgendes Problem ich brauche einen Algorithmus mit dem ich die erste, letzte Ip ausrechnen lassen kann eines Subnetztes und die NET-ID.</p>
<p>Mein problem ist nicht das verständnis beim Programmieren sondern das ich diesen Subnetting einfach net verstehe will einfach nicht in meine Birne...</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/182860/subnetting-berechnung-mit-c</link><generator>RSS for Node</generator><lastBuildDate>Wed, 23 Sep 2026 00:49:55 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/182860.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 30 May 2007 06:54:13 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Subnetting berechnung mit C++ on Wed, 30 May 2007 06:54:13 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>hab folgendes Problem ich brauche einen Algorithmus mit dem ich die erste, letzte Ip ausrechnen lassen kann eines Subnetztes und die NET-ID.</p>
<p>Mein problem ist nicht das verständnis beim Programmieren sondern das ich diesen Subnetting einfach net verstehe will einfach nicht in meine Birne...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1294945</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1294945</guid><dc:creator><![CDATA[doug04]]></dc:creator><pubDate>Wed, 30 May 2007 06:54:13 GMT</pubDate></item><item><title><![CDATA[Reply to Subnetting berechnung mit C++ on Wed, 30 May 2007 07:03:27 GMT]]></title><description><![CDATA[<p>Du hast die Subnetz-Maske und die IP-Adresse, damit dürfte der Rest sich auf einfache Binär-Arithmetik beschränken:</p>
<pre><code class="language-cpp">IP adresse = &quot;...&quot;;
IP subnetz = &quot;255.255.255.0&quot;;// oder war's anders herum? hier steht '1' für Netz-Anteil und '0' für die Adresse im Subnetz
IP lowest = adresse &amp; subnetz;
IP highest = adresse | ~subnetz;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1294948</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1294948</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 30 May 2007 07:03:27 GMT</pubDate></item><item><title><![CDATA[Reply to Subnetting berechnung mit C++ on Wed, 30 May 2007 08:26:52 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;iostream&gt;

#define MAKE_ADDRESS( a, b, c, d ) \
	( ( ( a ) &lt;&lt; 24 )  | ( ( b ) &lt;&lt; 16 ) | ( ( c ) &lt;&lt; 8 ) | ( d ) )

inline void print_ip( unsigned long ip )
{
	std::cout &lt;&lt; ( ( ip &gt;&gt; 24 ) &amp; 0xff ) &lt;&lt; &quot;.&quot;
			  &lt;&lt; ( ( ip &gt;&gt; 16 ) &amp; 0xff ) &lt;&lt; &quot;.&quot;
			  &lt;&lt; ( ( ip &gt;&gt; 8 ) &amp; 0xff ) &lt;&lt; &quot;.&quot;	
			  &lt;&lt; ( ip &amp; 0xff ) &lt;&lt; &quot; &quot;;
}

inline int count_bits( unsigned long v )
{
	int result = ( ( ( ( v &amp; 0xfff ) * 0x1001001001001ULL &amp; 0x84210842108421ULL ) % 0x1f )
			   + ( ( ( ( v &amp; 0xfff000 ) &gt;&gt; 12 ) * 0x1001001001001ULL &amp; 0x84210842108421ULL ) % 0x1f )
			   + ( ( ( v &gt;&gt; 24 ) * 0x1001001001001ULL &amp; 0x84210842108421ULL ) % 0x1f ) );

	return result;
}

int main()
{
	unsigned long id 		= MAKE_ADDRESS( 192, 168, 178, 0 );
	unsigned long org_mask	= MAKE_ADDRESS( 255, 255, 255, 0 );
	unsigned long mask 		= MAKE_ADDRESS( 255, 255, 255, 224 );

	if ( org_mask &gt; mask )
	{
		std::cout &lt;&lt; &quot;Fehlerhafte Netzmaske&quot; &lt;&lt; std::endl;
		return 0;
	}

	// Count of Subnets
	unsigned long count = ( 1 &lt;&lt; count_bits( org_mask ^ mask ) );
	unsigned long host_bits = count_bits( ~mask );

	for ( int i = 0; i &lt; count; ++i )
	{
		unsigned long netid = ( id &amp; mask ) | ( i &lt;&lt; host_bits );
		unsigned long bcast = ( id | ~mask ) | ( i &lt;&lt; host_bits );

		print_ip( netid ); // Netz-ID
		print_ip( netid+1 ); // Erster Host
		print_ip( bcast-1 ); // Letzter Host
		print_ip( bcast );	// Broadcast

		std::cout &lt;&lt; std::endl;
	}
}
</code></pre>
<p>Wenns um den Hostteil geht muss noch eins addiert bzw subtrahiert werden. Da 192.168.178.0 die Netz-ID darstellt und 192.168.178.255 der Broadcast ist und somit nicht an Hosts vergeben werden kann. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Nochmal Subnetting in Kurzforum:</p>
<p>Du hast eine Netz-ID: 192.168.178.0<br />
Eine Netzmaske: 255.255.255.0</p>
<p>Nun willst du das Ganze in Subnetzte unterteilen, d.h. du nimmst einige Bits deines Hostteils weg um eine neue Subnetzmaske zu erstellen. Zum Beispiel die ersten 3 Bits des letzten Oktets.</p>
<p>11111111 11111111 11111111 11100000 =&gt; 255.255.255.224</p>
<p>Jetzt hast du 3 Bits für deine Subnetzte und 5 Bits für deine Hosts innerhalb der einzelnen Netzte.</p>
<pre><code>Netz-ID                Erster Host        Letzter Host       BCast
192.168.178.0          192.168.178.1      192.168.178.30     192.168.178.31
192.168.178.32         192.168.178.33     192.168.178.62     192.168.178.63
192.168.178.64         192.168.178.65     192.168.178.94     192.168.178.95
192.168.178.96         192.168.178.97     192.168.178.126    192.168.178.127
192.168.178.128        192.168.178.129    192.168.178.158    192.168.178.159
192.168.178.160        192.168.178.161    192.168.178.190    192.168.178.191
192.168.178.192        192.168.178.193    192.168.178.222    192.168.178.223
192.168.178.224        192.168.178.225    192.168.178.254    192.168.178.255
</code></pre>
<p>Manchmal werden die Netzte mit der Bitstruktur 000 und 111 nicht vergeben. Können aber theoretisch. Hoffe das die Liste stimmt. Is ausm Kopf und Subnetting ist lang her! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";-)"
      alt="😉"
    /></p>
<p>P.s.: Ich hoffe der grauenhafte Code funktioniert einigermaßen. Habs nich hinreichend getestet! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";-)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1294953</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1294953</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Wed, 30 May 2007 08:26:52 GMT</pubDate></item></channel></rss>