C# と VB.NET の質問掲示板
ASP.NET、C++/CLI、Java 何でもどうぞ
C# と VB.NET の入門サイト
(過去ログ 163 を表示中)
掲示板トップ
C# と VB.NET のサンプル
新規作成
利用方法/規約
トピック表示
ランキング
記事検索
過去ログ
■94506
/ )
Re[1]: 整数==>2進文字列に変換
□投稿者/ Azulean
(1141回)-(2020/04/16(Thu) 06:06:38)
■
No94505
(otu さん) に返信
> ★(1):Int64型のMinValueをリテラルで宣言するとコンパイルエラーになります。
> Long.MinValueやInt64.MinValueとすると大丈夫です。
> リテラル表記ではエラーとなる仕様なのでしょうか?
詳しくないですが、仕様らしいです。
https://stackoverflow.com/questions/49113815/overflow-compiler-error-with-9223372036854775808l
符号のない、正の整数として解釈した後、-1 倍するみたいな解釈をするらしいです。
そのため、「9223372036854775808」がオーバーフローするのでコンパイルエラーとなるようです。
Int64.MinValue で十分じゃないでしょうか?
> ★(2):SByte.MinValue(-128)をConvert.ToStringで2進文字列に変換すると
> 「1111111110000000」になり2バイトで返却されます。
> 自分の予想では最上位の符号ビットだけが立った1バイト「10000000」が返却される
> と思っていたのですが違うのでしょうか?SByteって「-128~127」の1バイトですよね?
Convert.ToString の一覧を確認してください。
https://docs.microsoft.com/ja-jp/dotnet/api/system.convert.tostring?view=netframework-4.8
SByte と Int32 をもらう引数は定義されていないので、Int16 と Int32 を渡すものを呼び出しているのでしょう。
本当に SByte で実現したいなら自分で書くか、コンパイルオプションのオーバーフローチェックを外してから CByte で Byte 型で処理するか…?
(後者はお勧めできませんが)
>
> ★(3):UInt64型はConvert.ToStringでコンパイルエラーとなります。
前述の URL を確認してみてください。
存在しないからです。必要なら自作するとか…。
返信
編集キー/
編集
管理者用
-
Child Tree
-