Pythonにおける2進数の扱いが変だと感じるのは私だけでしょうか。


4bitの3が0011なのに、4bitの-3が-011なのは何故…?
1011もしくは-0011ならまだ納得できるのですが…

回答の条件
  • 1人5回まで
  • 150 ptで終了
  • 登録:2010/01/29 05:52:52
  • 終了:2010/01/29 16:11:13

回答(4件)

ただいまのポイント : ポイント4 pt / 150 pt ツリー表示 | 新着順
マイナス(数値演算子の符号反転) と 0011 heke2mee2010/01/29 12:37:22ポイント1pt
-3は2進数では 1101 です。2進数の0011は 011または11と書いてもOKだと思います。-011は - 0011 と同じなので マイナス(数値演算子の符号反転) と 0011で結果-3となるのではないでしょうか
3は、unsigned intだから? ku__ra__ge2010/01/29 11:54:24ポイント1pt
3は符号なし整数(c言語で言うunsigned)として変換するため絶対値が4桁で、 -3は符号あり整数として変更するため絶対値が3桁で表現されているのではないでしょうか? 4ビットの符号あり整数は-8~7の数を表現することが出 ...
マイナスには2の補数を使うので den2sn2010/01/29 11:33:25ポイント1pt
4bitの場合、表せる範囲は 7~-8 (0111~1000)です。 2進数では先頭のビットを符号として利用するのですが パソコンではマイナス値を2進数で扱う場合は2の補数を利用します。 それは引き算を足し算で行えるようにす ...
10進法の3を2進法で表すと11 考え中2010/01/29 10:56:18ポイント1pt
だから下二桁が11になるのは疑いがありません。 4bit表示だとあと2bit使えるわけです。 そこの使い方が問題なんでしょう。 4bitの一番左を符号として、0なら+、1なら-とすると 10進法の3と−3はそれぞれ0 ...
  • id:spendarmad
    ご回答ありがとうございます。

    質問内容が不明確で、かつ誤りがありましたので訂正し再度投稿させて頂きました。
    http://q.hatena.ne.jp/1264748980

    ご迷惑お掛けしました。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません