<?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[8x8-Bitfeld (= unsigned long long) um 45 Grad drehen?]]></title><description><![CDATA[<p>Wie kann ich ein 8x8-Bitfeld (= unsigned long long) um 45 Grad drehen?</p>
<p>Meine Quelle ist <a href="http://chessprogramming.wikispaces.com/Flipping+Mirroring+and+Rotating" rel="nofollow">http://chessprogramming.wikispaces.com/Flipping+Mirroring+and+Rotating</a> Dort siehe Abschnitt &quot;Pseudo-Rotation by 45 degrees&quot;</p>
<pre><code>/**
 * Pseudo rotate a bitboard 45 degree clockwise.
 * Main Diagonal is mapped to 1st rank
 * @param x any bitboard
 * @return bitboard x rotated
 */
U64 pseudoRotate45clockwise (U64 x) {
   const U64 k1 = C64(0xAAAAAAAAAAAAAAAA);
   const U64 k2 = C64(0xCCCCCCCCCCCCCCCC);
   const U64 k4 = C64(0xF0F0F0F0F0F0F0F0);
   x ^= k1 &amp; (x ^ rotateRight(x,  8));
   x ^= k2 &amp; (x ^ rotateRight(x, 16));
   x ^= k4 &amp; (x ^ rotateRight(x, 32));
   return x;
}
</code></pre>
<p>Aber rotateRight wird auf der Seite nicht definiert <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/323261/8x8-bitfeld-unsigned-long-long-um-45-grad-drehen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 16 Jul 2026 06:51:44 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/323261.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 23 Jan 2014 14:16:20 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to 8x8-Bitfeld (= unsigned long long) um 45 Grad drehen? on Thu, 23 Jan 2014 14:16:20 GMT]]></title><description><![CDATA[<p>Wie kann ich ein 8x8-Bitfeld (= unsigned long long) um 45 Grad drehen?</p>
<p>Meine Quelle ist <a href="http://chessprogramming.wikispaces.com/Flipping+Mirroring+and+Rotating" rel="nofollow">http://chessprogramming.wikispaces.com/Flipping+Mirroring+and+Rotating</a> Dort siehe Abschnitt &quot;Pseudo-Rotation by 45 degrees&quot;</p>
<pre><code>/**
 * Pseudo rotate a bitboard 45 degree clockwise.
 * Main Diagonal is mapped to 1st rank
 * @param x any bitboard
 * @return bitboard x rotated
 */
U64 pseudoRotate45clockwise (U64 x) {
   const U64 k1 = C64(0xAAAAAAAAAAAAAAAA);
   const U64 k2 = C64(0xCCCCCCCCCCCCCCCC);
   const U64 k4 = C64(0xF0F0F0F0F0F0F0F0);
   x ^= k1 &amp; (x ^ rotateRight(x,  8));
   x ^= k2 &amp; (x ^ rotateRight(x, 16));
   x ^= k4 &amp; (x ^ rotateRight(x, 32));
   return x;
}
</code></pre>
<p>Aber rotateRight wird auf der Seite nicht definiert <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2379177</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2379177</guid><dc:creator><![CDATA[schachprogrammierer]]></dc:creator><pubDate>Thu, 23 Jan 2014 14:16:20 GMT</pubDate></item><item><title><![CDATA[Reply to 8x8-Bitfeld (= unsigned long long) um 45 Grad drehen? on Thu, 23 Jan 2014 14:39:58 GMT]]></title><description><![CDATA[<p>Wahrscheinlich einfach ein zyklischer shift.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2379182</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2379182</guid><dc:creator><![CDATA[Arcoth_]]></dc:creator><pubDate>Thu, 23 Jan 2014 14:39:58 GMT</pubDate></item><item><title><![CDATA[Reply to 8x8-Bitfeld (= unsigned long long) um 45 Grad drehen? on Thu, 23 Jan 2014 14:43:45 GMT]]></title><description><![CDATA[<p>schachprogrammierer schrieb:</p>
<blockquote>
<p>Aber rotateRight wird auf der Seite nicht definiert <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
</blockquote>
<p><a href="http://chessprogramming.wikispaces.com/General+Setwise+Operations#Rotate" rel="nofollow">Doch.</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2379183</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2379183</guid><dc:creator><![CDATA[Caligulaminus_off]]></dc:creator><pubDate>Thu, 23 Jan 2014 14:43:45 GMT</pubDate></item><item><title><![CDATA[Reply to 8x8-Bitfeld (= unsigned long long) um 45 Grad drehen? on Thu, 23 Jan 2014 18:13:46 GMT]]></title><description><![CDATA[<p>Uups.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2379190</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2379190</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Thu, 23 Jan 2014 18:13:46 GMT</pubDate></item><item><title><![CDATA[Reply to 8x8-Bitfeld (= unsigned long long) um 45 Grad drehen? on Thu, 23 Jan 2014 16:14:22 GMT]]></title><description><![CDATA[<p><a href="http://chessprogramming.wikispaces.com/General+Setwise+Operations#Rotate" rel="nofollow">http://chessprogramming.wikispaces.com/General+Setwise+Operations#Rotate</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2379196</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2379196</guid><dc:creator><![CDATA[linkklicker]]></dc:creator><pubDate>Thu, 23 Jan 2014 16:14:22 GMT</pubDate></item><item><title><![CDATA[Reply to 8x8-Bitfeld (= unsigned long long) um 45 Grad drehen? on Thu, 23 Jan 2014 17:38:34 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>Sone doppelt.<br />
Klickt doch mal auf den Link. Es geht drum, ein Bitboard zu drehen.</p>
</blockquote>
<p><code>pseudoRotate45clockwise()</code> rotiert das Board.<br />
<code>rotateRight()</code> rotiert ein 64-Bit-Unsigned.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2379212</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2379212</guid><dc:creator><![CDATA[Caligulaminus_off]]></dc:creator><pubDate>Thu, 23 Jan 2014 17:38:34 GMT</pubDate></item><item><title><![CDATA[Reply to 8x8-Bitfeld (= unsigned long long) um 45 Grad drehen? on Thu, 23 Jan 2014 18:10:44 GMT]]></title><description><![CDATA[<p>Edit: Leider gibt es keine vernünftige Studio-Version auf Youtube... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2379216</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2379216</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Thu, 23 Jan 2014 18:10:44 GMT</pubDate></item><item><title><![CDATA[Reply to 8x8-Bitfeld (= unsigned long long) um 45 Grad drehen? on Fri, 24 Jan 2014 16:06:39 GMT]]></title><description><![CDATA[<p>Es funktioniert nicht richtig:</p>
<pre><code>inline unsigned long long rotateLeft(unsigned long long x, int s) { return _rotl64(x, s); }
inline unsigned long long rotateRight(unsigned long long x, int s) { return _rotr64(x, s); }

Bitboard Bitboard::rotiere45GradImUhrzeigersinn() const
{
	unsigned long long x = data;
	const unsigned long long k1 = 0xAAAAAAAAAAAAAAAAull;
	const unsigned long long k2 = 0xCCCCCCCCCCCCCCCCull;
	const unsigned long long k4 = 0xF0F0F0F0F0F0F0F0ull;
	x ^= k1 &amp; (x ^ rotateRight(x, 8));
	x ^= k2 &amp; (x ^ rotateRight(x, 16));
	x ^= k4 &amp; (x ^ rotateRight(x, 32));
	return Bitboard{ x };
}

Bitboard Bitboard::rotiere45GradGegenUhrzeigersinn() const
{
	unsigned long long x = data;
	const unsigned long long k1 = 0x5555555555555555ull;
	const unsigned long long k2 = 0x3333333333333333ull;
	const unsigned long long k4 = 0x0f0f0f0f0f0f0f0full;
	x ^= k1 &amp; (x ^ rotateRight(x, 8));
	x ^= k2 &amp; (x ^ rotateRight(x, 16));
	x ^= k4 &amp; (x ^ rotateRight(x, 32));
	return Bitboard{ x };
}
</code></pre>
<p>ergibt:</p>
<pre><code>a8 und h1:
h1:
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000001

45 UZS
00000000
00000000
00000000
00000000
00000000
00000000
00000001
00000000

45 gUZS
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000001
</code></pre>
<p>aber es sollte</p>
<pre><code>45 UZS
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000001
</code></pre>
<p>rauskommen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2379355</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2379355</guid><dc:creator><![CDATA[schachprogrammierer]]></dc:creator><pubDate>Fri, 24 Jan 2014 16:06:39 GMT</pubDate></item><item><title><![CDATA[Reply to 8x8-Bitfeld (= unsigned long long) um 45 Grad drehen? on Fri, 24 Jan 2014 16:22:49 GMT]]></title><description><![CDATA[<p>Nee, es soll genau das rauskommen was es ergibt.<br />
Schau doch wo die 7 landet bei<br />
<a href="http://chessprogramming.wikispaces.com/Flipping+Mirroring+and+Rotating#The" rel="nofollow">http://chessprogramming.wikispaces.com/Flipping+Mirroring+and+Rotating#The</a> whole Bitboard-Pseudo-Rotation by 45 degrees-Clockwise</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2379361</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2379361</guid><dc:creator><![CDATA[scrontch]]></dc:creator><pubDate>Fri, 24 Jan 2014 16:22:49 GMT</pubDate></item><item><title><![CDATA[Reply to 8x8-Bitfeld (= unsigned long long) um 45 Grad drehen? on Fri, 24 Jan 2014 17:51:08 GMT]]></title><description><![CDATA[<p>OK. Ich will es aber wie in &quot;Another pseudo rotation scheme was introduced by Robert Hyatt's rotated bitboards approach. While the 45 degree rotation looks more natural at the first glance, the calculations of this mapping is more complicated.&quot; haben.</p>
<p>Was für einen rotier-Code muss ich dafür nehmen?</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2379369</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2379369</guid><dc:creator><![CDATA[originalposter]]></dc:creator><pubDate>Fri, 24 Jan 2014 17:51:08 GMT</pubDate></item><item><title><![CDATA[Reply to 8x8-Bitfeld (= unsigned long long) um 45 Grad drehen? on Fri, 24 Jan 2014 18:54:13 GMT]]></title><description><![CDATA[<p>OK, vergesst das. Da steht &quot;A parallel prefix solution to map the normal occupancy to the visual rotated approach is left to the ambitious reader.&quot;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2379374</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2379374</guid><dc:creator><![CDATA[originalposter]]></dc:creator><pubDate>Fri, 24 Jan 2014 18:54:13 GMT</pubDate></item></channel></rss>