int i = 20;
string output = Convert.ToString(i, 2); // Base2 formatting
i = -20;
output = Convert.ToString(i, 2);
Value Expected Actual
20 00000000000000000000000000010100 10100
-20 10000000000000000000000000010100 11111111111111111111111111101100
我可以看到,也许二进制输出 20 已被截断,但我不明白 -20 的输出。我的期望基于 base2 表示法以及整数的有符号元素以最左边第一个数字表示的信念。 0 为正,1 为负。有人可以解释一下结果,特别是 -20 的结果吗?
.NET 中的负数以二进制表示为二进制补码.
来自 MSDN -Convert.ToString 方法(Int32、Int32):
如果 value 为负且 toBase 为 2、8 或 16,则返回的字符串使用二进制补码表示形式
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)