Why -1 >> 1 is -1 ? And 1 >> 1 is 0!
<p>I have next code:   </p>

<pre><code>std::cout &lt;&lt; (-10 &gt;&gt; 1) &lt;&lt; std::endl;
std::cout &lt;&lt; (-9 &gt;&gt; 1) &lt;&lt; std::endl;
std::cout &lt;&lt; (-8 &gt;&gt; 1) &lt;&lt; std::endl;
std::cout &lt;&lt; (-7 &gt;&gt; 1) &lt;&lt; std::endl;
std::cout &lt;&lt; (-6 &gt;&gt; 1) &lt;&lt; std::endl;
std::cout &lt;&lt; (-5 &gt;&gt; 1) &lt;&lt; std::endl;
std::cout &lt;&lt; (-4 &gt;&gt; 1) &lt;&lt; std::endl;
std::cout &lt;&lt; (-3 &gt;&gt; 1) &lt;&lt; std::endl;
std::cout &lt;&lt; (-2 &gt;&gt; 1) &lt;&lt; std::endl;
std::cout &lt;&lt; (-1 &gt;&gt; 1) &lt;&lt; std::endl;
</code></pre>

<p>The result is:</p>

<pre><code>-5
-5
-4
-4
-3
-3
-2
-2
-1
-1
</code></pre>

<p>But why? </p>

<p><code>-1</code> is <code>1111 1111</code> (for 1 byte), <code>-1 &gt;&gt;</code> 1 must be : <code>1011 1111</code> and it is not <code>-1</code> or <code>0</code>! (sign-bit is not shifted, I know)</p>

<p>Can someone explain to me how this works?</p>
