为什么Convert.ToString((sbyte)-128,2)前置1?

Gyb*_*ybe 3 c# tostring

我的理解是没有ToString重载需要一个sbyte并且它被明确地转换为short.但这些领先1的来自哪里?

Console.WriteLine("{0}", Convert.ToString((sbyte)-128, 2));

>1111111110000000
Run Code Online (Sandbox Code Playgroud)

谢谢,Jibe

sbl*_*lom 6

你的理解是完全正确的.

1是由称为" 符号扩展 " 的东西引起的.这是2s补充二进制算法的副作用.