C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.94506 の関連記事表示

<< 0 >>
■94506  Re[1]: 整数==>2進文字列に変換
□投稿者/ Azulean -(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 を確認してみてください。
    存在しないからです。必要なら自作するとか…。
記事No.94505 のレス /過去ログ163より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -