2011-07-11 8 views
2

私はIf文で "And"比較演算子を使用して数値を比較することについて以前に質問しましたが、今は私の頭をビット演算子にラップさせています。だから私はバイナリ形式の10進数の変換を見ることを可能にする非常に基本的なコードを書いている。なぜVByNetでは負のSByte番号が16ビットですか?

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 

私はparamerterとしてSByteを使用していますことをここにお知らせ - 右のみ8ビットを含む必要がありますか?ただし、表示されるメッセージボックスには負の数に16ビットが割り当てられます。正の数値は正しい値を持ちます。

答えて

2

SByteを要するConvert.ToStringオーバーロードがないため、SByteは暗黙的にShortに変換されています。

+0

私はそこにいると信じていますか?私はそれがそれを変換するかもしれないことがわかりますが、Intellisenseは、ToStringメソッドのSbyteパラメータがあると言います。 http://msdn.microsoft.com/en-us/library/ms131015.aspx –

+1

@Adamこれは完全に異なるオーバーロードです。これは、整数ベースではなく、第2引数として 'IFormatProvider'を必要とします。 –

関連する問題