为什么VB.Net中的负SByte数有16位?
我之前问过一个关于在If语句中使用“And”比较运算符比较数字的问题,现在我一直在胡思乱想让我的头缠在按位运算符上。所以我写了一个非常基本的代码,可以看到任何十进制数在二进制格式下的转换为什么VB.Net中的负SByte数有16位?,vb.net,binary,bit,signed,Vb.net,Binary,Bit,Signed,我之前问过一个关于在If语句中使用“And”比较运算符比较数字的问题,现在我一直在胡思乱想让我的头缠在按位运算符上。所以我写了一个非常基本的代码,可以看到任何十进制数在二进制格式下的转换 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click MsgBox(ConvertToBinary(-1)) End Sub Pub
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。没有
转换。ToString
重载会占用SByte
,因此SByte
被隐式转换为Short我相信有吗?我可以看到它可能会转换它,但是Intellisense说ToString方法有一个Sbyte参数@Adam这是一个完全不同的重载,它需要一个IFormatProvider
作为第二个参数,而不是一个整数基。