|
分類:[VB.NET/VB2005 以降]
環境:VB2017,.NET4.7.2
整数を2進文字列に変換したいのですが、判らない事があるので、ご指導下さい。
教えてもらいたいのは以下のコードに記載した★印の箇所です。
★(1):Int64型のMinValueをリテラルで宣言するとコンパイルエラーになります。
Long.MinValueやInt64.MinValueとすると大丈夫です。
リテラル表記ではエラーとなる仕様なのでしょうか?
★(2):SByte.MinValue(-128)をConvert.ToStringで2進文字列に変換すると
「1111111110000000」になり2バイトで返却されます。
自分の予想では最上位の符号ビットだけが立った1バイト「10000000」が返却される
と思っていたのですが違うのでしょうか?SByteって「-128〜127」の1バイトですよね?
★(3):UInt64型はConvert.ToStringでコンパイルエラーとなります。
以上、ご指導よろしくお願いします。
PS.その他の整数型も試したので変数名がv1からv15で途中欠番になっています。
Private Sub ToolStripButton1_Click(sender As Object, e As EventArgs) Handles ToolStripButton1.Click
Dim v1 As SByte = SByte.MinValue
Dim v15 As UInt64 = UInt64.MinValue
Dim v16 As UInt64 = UInt64.MaxValue
'Dim v17 As Int64 = -9223372036854775808L ★(1)コンパイルエラー(オーバーフロー)
Debug.WriteLine(Convert.ToString(v1, 2)) '1111111110000000 ★(2)
'Debug.WriteLine(Convert.ToString(v15, 2)) ★(3)コンパイルエラー(オーバーロードなし)
'Debug.WriteLine(Convert.ToString(v16, 2)) ★(3)コンパイルエラー(オーバーロードなし)
End Sub
|