No.3ベストアンサー
- 回答日時:
簡単のために8ビットでやってみます。
8は2進数だと
00001000
ですよね。
8 + (-8) = 0 なので、
00001000 + (?) = 00000000 になる?の部分が-8に
なるわけです。
で、2進数で表した8である
00001000のビットを反転させると
11110111ですね。これらを足すと
00001000 + 11110111 = 11111111
になります。この両辺に00000001を足すと
00001000 + (11110111 + 00000001) = (11111111 + 00000001)
00001000 + 11111000 = 100000000
となります。8ビットで表現しているので、
右辺の100000000の先頭1ビットは無視されて、
00000000すなわち0になります。要するに、
00001000(10進の8) + 11111000(10進の-8) = 00000000(10進の0)
というわけで、11111000が-8という事になります。
これの求め方は2進数で表した8のビットを反転させて1を足せば良い事になります。
00001000(10進の8)
反転させて
11110111
1足して
11111000
これが-8となります。
No.4
- 回答日時:
今度は16ビットで考えてみます。
8と8のビットを反転させたものを足すと
0000000000001000・・・8
+)1111111111110111・・・8のビットを反転させたもの
-----------------------------------------------
1111111111111111
これに1を足すと
10000000000000000
になります。16ビット有効なので、この結果の先頭の1は無視されます。そうすると
0000000000000000 すなわち0です。
"8"と"8を反転させて足したもの"に"1"を足したら0になったので、ある正数のマイナスを求める場合は、
「反転させて1を足す」
となります。
No.2
- 回答日時:
10進数の-1が2進数(32bit:int)だと
(1111 1111 1111 1111 1111 1111 1111 1111)・・・-1
って事はわかっているでしょうか?
もしわからないのであれば
「2の補数」で検索してると良いでしょう。
何故そうやって表すかですが
2の補数でデータを持っていると
足し算(引き算)を扱いやすいのです。
例えば-8 + 7だと
1111 1111 1111 1111 1111 1111 1111 1000・・・-8
0000 0000 0000 0000 0000 0000 0000 0111・・・-7
を足すと
1111 1111 1111 1111 1111 1111 1111 1111・・・-1
「2の補数」を使えば符号に関係なく
そのまま、足す事ができるのです。
参考URL:http://ja.wikipedia.org/wiki/2%E3%81%AE%E8%A3%9C …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 情報処理技術者・Microsoft認定資格 2進数の問題を教えてください。 1 2022/07/27 09:42
- 計算機科学 2進数の計算について 2進数の値は全て8ビットで負数は2の補数形式とする。結果が8ビットで表現出来な 3 2023/07/22 14:08
- 数学 以下の問題が分かりません。 8ビット浮動小数点数が、最上位ビットから順に符号1ビット、指数部3ビット 4 2023/07/22 16:06
- 情報処理技術者・Microsoft認定資格 情報技術の問題についてです。 10進数の−36を以下のような16ビットの浮動小数点表示にするといくつ 3 2022/05/21 19:53
- その他(コンピューター・テクノロジー) 量子コンピュータの動作原理がわかりません。同じビットが、1でも0でも有って良いだろうか? 3 2023/02/04 03:20
- 計算機科学 ビット計算 2 2023/04/16 14:26
- 計算機科学 20個の量子ビットからなる量子計算機はおおよそいくつの状態を同時に表現できるか?10x の形で表現し 2 2022/12/27 14:52
- 工学 疑似乱数生成器 3 2023/01/05 02:06
- 計算機科学 8ビット浮動小数点数 0 1000 100 を10進法 8ビット浮動小数点数 1 1100 011 3 2022/10/28 08:07
- 計算機科学 6ビット(符号含む)の二進数 4 2023/04/16 13:22
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAのIf,Then 構...
-
0xffffとは?
-
8ビットのデータの、先頭ビット...
-
03分22秒36のような時間の単位...
-
verilog 符号付加減算(最上位...
-
ビットシフトってどんな時使うの?
-
文字参照は10進数と16進数では...
-
浮動小数点演算と固定小数点演...
-
visualbasic のコード中で 100...
-
小数点の引き算が不正確
-
8085系プログラミングについて
-
情報源符号化について
-
情報科学の飽和演算、ラップア...
-
ものづくりに向いているプログ...
-
ライン数とステップ数の違いは?
-
電化製品って何言語?
-
PICでパルス数をカウントする方法
-
OSはどんなコンピューター言語...
-
VC6でIDEでソース部分のアセン...
-
割り込みベクターをC言語で書...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
0xffffとは?
-
エクセルVBAのIf,Then 構...
-
8ビットのデータの、先頭ビット...
-
ビットシフトってどんな時使うの?
-
verilog 符号付加減算(最上位...
-
一般のソフトで画像を扱う場合...
-
符号無し整数xを右にnビット回転
-
文字参照は10進数と16進数では...
-
シーケンス制御についての質問...
-
BMP画像のネガを作成するプログ...
-
アクセス(2003)のVBAでビット...
-
03分22秒36のような時間の単位...
-
命令について
-
10進数(+-)→2進数への変換(2)
-
C言語で128bitの2進数のビット...
-
1の補数
-
ビット列を表示するプログラム
-
Python: 数値を反転させたい
-
ビットの取り出し方法
-
PS3に搭載されている"Cell"は、...
おすすめ情報