Почему отрицательный номер SByte имеет 16 бит в VB.Net? - PullRequest
2 голосов
/ 11 июля 2011

Ранее я задавал вопрос о сравнении чисел, используя оператор сравнения «И» в If Statements, и теперь я возился с тем, чтобы обернуть голову вокруг побитовых операторов. Поэтому я написал очень простой код, который позволит мне увидеть преобразование любого десятичного числа в двоичном формате.

    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 Ответ

2 голосов
/ 11 июля 2011

Нет перегрузки Convert.ToString, которая принимает SByte, поэтому SByte неявно преобразуется в Short.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...