static void Test() {
var i = -100;
var signedShift = i >> 1;
var unsignedShift = i >>> 1;
Console.WriteLine($" I: {i, -12} Binary: {Convert.ToString(i, 2).PadLeft(32, '0')}");
Console.WriteLine($" SignedShift: {signedShift,-12} Binary: {Convert.ToString(signedShift, 2).PadLeft(32, '0')}");
Console.WriteLine($"UnsignedShift: {unsignedShift,-12} Binary: {Convert.ToString(unsignedShift, 2).PadLeft(32, '0')}");
/* Console output:
*
* I: -100 Binary: 11111111111111111111111110011100
* SignedShift: -50 Binary: 11111111111111111111111111001110
* UnsignedShift: 2147483598 Binary: 01111111111111111111111111001110
*/
}
Code snippet taken from "Complete C# Quick Reference - C# 11".