<?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[C++ Endianess]]></title><description><![CDATA[<p>Abend,</p>
<p>ich wollte testen, ob C++ für die Variablen Big oder Little-Endian benutzt und ob die Wahl vllt Abhängig von der Plattform ist. Ich benutzte Windows 7 + Intel CPU, also Little-Endian Plattform.<br />
Mit diesem Code geb ich die Binärdarstellung einer Zahl aus:</p>
<pre><code class="language-cpp">int n = 1234567899;
for (int i=31; i&gt;=0; i--) {
    int bit = ((n &gt;&gt; i) &amp; 1);
    cout &lt;&lt; bit;
}
</code></pre>
<p>Die Ausgabe ist bei mir 01001001100101100000001011011011, sprich genauso, wie man es aufm Blatt Papier hinschreiben würde.<br />
Für n = 2 gibt er 00000000000000000000000000000010 aus. Heißt das jetzt, dass C++ intern IMMER Big-Endian benutzt? Ich habe eigentlich eher eine Little-Endian darstellung erwartet. Aber offenbar benutzt C++ Big-Endian, denn 2 in little Endian wäre ja 00000010 00000000 00000000 00000000, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/275585/c-endianess</link><generator>RSS for Node</generator><lastBuildDate>Wed, 26 Aug 2026 20:06:59 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/275585.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 17 Oct 2010 16:16:34 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to C++ Endianess on Sun, 17 Oct 2010 16:16:34 GMT]]></title><description><![CDATA[<p>Abend,</p>
<p>ich wollte testen, ob C++ für die Variablen Big oder Little-Endian benutzt und ob die Wahl vllt Abhängig von der Plattform ist. Ich benutzte Windows 7 + Intel CPU, also Little-Endian Plattform.<br />
Mit diesem Code geb ich die Binärdarstellung einer Zahl aus:</p>
<pre><code class="language-cpp">int n = 1234567899;
for (int i=31; i&gt;=0; i--) {
    int bit = ((n &gt;&gt; i) &amp; 1);
    cout &lt;&lt; bit;
}
</code></pre>
<p>Die Ausgabe ist bei mir 01001001100101100000001011011011, sprich genauso, wie man es aufm Blatt Papier hinschreiben würde.<br />
Für n = 2 gibt er 00000000000000000000000000000010 aus. Heißt das jetzt, dass C++ intern IMMER Big-Endian benutzt? Ich habe eigentlich eher eine Little-Endian darstellung erwartet. Aber offenbar benutzt C++ Big-Endian, denn 2 in little Endian wäre ja 00000010 00000000 00000000 00000000, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1966774</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1966774</guid><dc:creator><![CDATA[biglittle]]></dc:creator><pubDate>Sun, 17 Oct 2010 16:16:34 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Endianess on Sun, 17 Oct 2010 17:59:15 GMT]]></title><description><![CDATA[<p>Endianess ist plattformabhängig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1966775</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1966775</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 17 Oct 2010 17:59:15 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Endianess on Sun, 17 Oct 2010 17:21:30 GMT]]></title><description><![CDATA[<p>biglittle schrieb:</p>
<blockquote>
<p>Aber offenbar benutzt C++ Big-Endian, denn 2 in little Endian wäre ja 00000010 00000000 00000000 00000000, oder?</p>
</blockquote>
<p>Nein. &gt;&gt; und &amp; und so nehmen die Bits, wie sie logisch sind. Die können dabei physikalisch dennoch verwürfelt rumliegen.</p>
<p>Mach mal</p>
<pre><code class="language-cpp">int n = 1234567899;
char* pch=reinterpret_cast&lt;char*&gt;(&amp;n);
cout&lt;&lt;int(*pch);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1966777</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1966777</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 17 Oct 2010 17:21:30 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Endianess on Sun, 17 Oct 2010 16:26:11 GMT]]></title><description><![CDATA[<p>Bytesex hat an dieser Stelle überhaupt keine Bedeutung. i &gt;&gt; 1 schiebt immer das kleinste Bit raus.</p>
<p>Endianness dreht sich um die Anordnung der Byte einer Zahl im Speicher. Wenn du</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;tr1/cstdint&gt;

void bitprint(char c) {
  for(int i = 7; i &gt;= 0; --i) {
    std::cout &lt;&lt; (c &gt;&gt; i &amp; 1) ? '1' : '0';
  }
}

int main() {
  union {
    std::tr1::uint32_t x;
    char b[4];
  } u;

  u.x = 123456789;

  for(int i = 0; i &lt; 4; ++i) {
    bitprint(u.b[i]);
    std::cout &lt;&lt; ' ';
  }

  std::cout &lt;&lt; std::endl;
}
</code></pre>
<p>schreibst, wirst du</p>
<pre><code>00010101 11001101 01011011 00000111 &lt;-- auf x86
00000111 01011011 11001101 00010101 &lt;-- auf SPARC
</code></pre>
<p>kriegen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1966780</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1966780</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Sun, 17 Oct 2010 16:26:11 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Endianess on Sun, 17 Oct 2010 16:34:10 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>Nein. &gt;&gt; und &amp; und so nehmen die Bits, wie sie logisch sind. Die können dabei physikalisch dennoch verwürfelt rumliegen.</p>
<p>Mach mal</p>
<pre><code class="language-cpp">int n = 1234567899;
char* pch=reinterpret_cast&lt;char*&gt;(&amp;n);
cout&lt;&lt;int(*pch);
</code></pre>
</blockquote>
<p>Hab den char in unsigned char geändert und dann gibt er bei mir 219 aus, binär: 11011011 (sprich das Byte ganz rechts in der Form, wie man es aufm Blatt Papier (Big-Endian) aufschreiben würde).<br />
Ok, das heißt es wird also Little-Endian bei mir benutzt. Auf einem Big-Endian System würde *pch also das MSB ausgeben? Was bestimmt eigentlich ob das Zeug im Big oder Little-Endian Format ist, nur das Betriebssystem oder nur die CPU? Wie würden zb Zahlen gespeichert werden wenn ich ein Big-Endian BS (zB Mac OS <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f635.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--dizzy_face"
      title="X)"
      alt="😵"
    /> hab und eine Little-Endian CPU?</p>
<p>Was mir noch nicht ganz klar ist: Wenn die Zahlen bei mir in Little-Endian stehen, wieso gibt dann mein Code die Zahl in Big-Endian aus? Ich arbeite doch mit den Bitoperatoren direkt auf der Zahl. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1966787</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1966787</guid><dc:creator><![CDATA[biglittle]]></dc:creator><pubDate>Sun, 17 Oct 2010 16:34:10 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Endianess on Sun, 17 Oct 2010 16:37:04 GMT]]></title><description><![CDATA[<p>biglittle schrieb:</p>
<blockquote>
<p>Was mir noch nicht ganz klar ist: Wenn die Zahlen bei mir in Little-Endian stehen, wieso gibt dann mein Code die Zahl in Big-Endian aus? Ich arbeite doch mit den Bitoperatoren direkt auf der Zahl. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
</blockquote>
<p>Nein. Du arbeitest auf einem Prozessor-Register. Im register ist alles ok und sinnvoll. Nur runter ins Ram wird mit der Verdrehung geschrieben und gelesen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1966791</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1966791</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 17 Oct 2010 16:37:04 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Endianess on Sun, 17 Oct 2010 17:17:27 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>Nein. &gt;&gt; und &amp; und so nehmen die Bits, wie sie logisch sind. Die können dabei physikalisch dennoch verwürfelt rumliegen.</p>
</blockquote>
<p>Ich habe mich auf die Endianess bezogen, was imo auch gefragt war.<br />
Aber die Operatoren arbeiten natürlich wie erwartet. Sonst könnte man ja schnelle Multiplikation/Division ja nicht gescheit machen. <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1966803</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1966803</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 17 Oct 2010 17:17:27 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Endianess on Sun, 17 Oct 2010 17:22:38 GMT]]></title><description><![CDATA[<p>drakon schrieb:</p>
<blockquote>
<p>volkard schrieb:</p>
<blockquote>
<p>Nein. &gt;&gt; und &amp; und so nehmen die Bits, wie sie logisch sind. Die können dabei physikalisch dennoch verwürfelt rumliegen.</p>
</blockquote>
<p>Ich habe mich auf die Endianess bezogen, was imo auch gefragt war.<br />
Aber die Operatoren arbeiten natürlich wie erwartet. Sonst könnte man ja schnelle Multiplikation/Division ja nicht gescheit machen. <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>
</blockquote>
<p>Sorry. Ich hatte Dir gar nicht widersprochen. Aber ohne Quote in meinem Posting sah es so aus. Hab's jetzt richtiggestellt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1966807</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1966807</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 17 Oct 2010 17:22:38 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Endianess on Sun, 17 Oct 2010 17:58:18 GMT]]></title><description><![CDATA[<p>biglittle schrieb:</p>
<blockquote>
<p>...</p>
<p>ich ein Big-Endian BS (zB Mac OS <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f635.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--dizzy_face"
      title="X)"
      alt="😵"
    /> hab und eine Little-Endian CPU?</p>
</blockquote>
<p>Wie kommst du auf die Idee, dass OS X ein Big-Endian System sei? Auf alten PowerPC-Systemen wird Big Endian, auf Intel Little Endian verwendet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1966822</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1966822</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Sun, 17 Oct 2010 17:58:18 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Endianess on Sun, 17 Oct 2010 17:59:59 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>Sorry. Ich hatte Dir gar nicht widersprochen. Aber ohne Quote in meinem Posting sah es so aus. Hab's jetzt richtiggestellt.</p>
</blockquote>
<p>Ok. Habe meinen auch noch unmissverständlich ausgedrückt. <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1966823</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1966823</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 17 Oct 2010 17:59:59 GMT</pubDate></item></channel></rss>