为什么负的SByte数在VB.Net中有16位?

时间:2011-07-11 17:30:30

标签: vb.net binary bit signed

之前我问过一个问题,在If语句中使用“和”比较运算符来比较数字,现在我一直在努力让我的脑袋绕着按位运算符。所以我编写了一个非常基本的代码,允许我以二进制格式查看任何十进制数的转换。

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    MsgBox(ConvertToBinary(-1))
End Sub

Public Function ConvertToBinary(ByVal someInteger As SByte) As String
    Dim converted As String = Convert.ToString(someInteger, 2) '.PadLeft(8, "a"c)
    Return converted
End Function

请注意,我使用SByte作为参数 - 它应该只包含8位?但是,出现的消息框有16位分配给负数。正数具有正确的8。

1 个答案:

答案 0 :(得分:2)

没有Convert.ToString重载需要SByte,因此SByte被隐式转换为Short