![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
コンピューターは、マイナスの表現に、2の補数を使った
有効桁?(用語が適切かどうか)の、先頭ビットを、マイナスの数として、
残りの桁のビットを、プラス計算して、数を、符号付きとして表現すると言うことは、解りましたが。
多くの、コンピューターやマイコンの有志の方が書かれた、入門書を読むと、
数字を符号付きどう扱うかは、その時の処理次第と言った、ニアンス等で書かれています。
その部分がよくわからないのですが、CPUの計算の際に、符号付きとして、2進数を処理しなさいとか符号なしで処理しなさいと言った、アセンブラ命令の違いがあるのでしょうか?
それとも、CPU側では、全て符号付きで計算されるので、先頭ビットを、自身で予め、スタック等へ退避させて、計算した後に戻す、つまり、符号部分を0にして計算するので、符号なし計算も出来るよ、と言ったことでしょうか?
自身でも、違うような気がしています、まだ、用語や仕組みの勉強中で、アセンブラのプログラミングは、殆ど、簡単な例文を見る程度で、理解出来ていません。
勘違いしている部分があると思いますが、どうぞ、お解りになる方、お助けください。
No.3ベストアンサー
- 回答日時:
一応強調しておくと, 2の補数を使うと
*加減算*は符号があってもなくても同じように計算可能
です (オーバーフローしなければ). ただし, 「表現できる値の範囲を超えた」かどうかの判定は符号があるときとないときで変わってくるので, フラグまで考えると「加減算であっても異なる命令を使う」ことは考えられます. 特に, 普通の演算ではフラグが変化しない代わりに「符号付の比較命令」と「符号なしの比較命令」とを分けているアーキテクチャは存在します.
さすがに乗除算は符号を意識しないとだめで, こちらは命令を共通化している例はないんじゃないかなぁ.
恐れいります、補足ありがとうございました。
減算命令の中身は、2の補数を使い加算して、結果をレジスタに戻してくれると言うことで、良さそうですね。
プログラマー側では、2の補数に置換えたりする必要は、減算命令があるCPUだと、不要と言うことですよね。
オーバーフローに関しては、別命令で、レジスタHLレジスタ用の計算をするようなことと理解しています。
謎が解けて来た感じがしています。
あとは、慣れでしょうか・・・
No.4
- 回答日時:
私の意見としては、
符号付き・符号無しで別のアセンブラ命令が用意されているかそうでないかは、重要ではありません。
用意されている場合が多いですが、それが必須というわけではなく、無くてもいくつかの命令を組み合わせれば同じことが出来ます。
例として乗算命令に符号無し版しか用意されていないCPUにPIC18があります。それでも符号付き乗算は符号チェックと減算を組み合わせて可能です(画像)。
符号付き・無しという概念においてポイントとなるのはあくまで、「符号付き・無しの区別は、そのデータ自身ではなくその時の処理で決まる」という点であり、
その「処理」の違いが別の(1つの)アセンブラ命令なのか別の複雑な命令列なのかは、また別の話です。
そこを混同すると理解の妨げになるでしょう。
![「アセンブラについて初歩の質問」の回答画像4](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/f/150691_57c163730ebbe/M.png)
なるほどです、誤解が解けて来ました。
CPU側の仕組みはあまり考えなくても、良かったのですね。
命令で、符号ビットの処理を自分でアルゴリズムを書いてやるか、気の利いたアセンブラ命令でやるのかの違いだけ意識すれば、CPU側のことは、単なる全加算器と見て良いと言うことですね。
No.2
- 回答日時:
まず, 負数を表す方法はいくつかあります. 整数型では 2の補数が大多数だと思いますが, 実数型では「符号+絶対値」という表現方法が普通でしょう.
そして, 2の補数を使うなら, 加減算においては (オーバーフローしない限り) 符号の有無は結果に関係ありません. つまり, 符号なしと思って加減算を実行しても, その結果は「符号があると思った時の結果」と変わらないはずです. 実際に手で計算して確かめてみてください.
乗除算は符号があるかどうかで結果が変わりますが, 多くの CPU では符号付の乗除算と符号なしの乗除算で異なる命令を使っているかと思います.
回答有り難うございます。
2の補数計算では、符号付きも符号なしも結果は同じだったのですね。
解ってませんでした。
どうも、このあたりの勘違いだったようです。
No.1
- 回答日時:
アセンブラは機種(またはCPU)によって仕様が異なります。
該当機種のアセンブラの仕様を確認ください。
その上で。
以下のような基礎的説明が役立つでしょう。
http://itpro.nikkeibp.co.jp/article/COLUMN/20061 …
http://monoist.atmarkit.co.jp/fembedded/articles …
参考まで。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 高校 2進数のオーバフローについて 6 2022/05/12 21:25
- その他(データベース) 4進数風なバーコードは何ですか? 2 2022/11/28 23:33
- 計算機科学 ビット計算 2 2023/04/16 14:26
- その他(コンピューター・テクノロジー) 量子コンピュータの動作原理がわかりません。同じビットが、1でも0でも有って良いだろうか? 3 2023/02/04 03:20
- 数学 ハフマン符号化にかんしての問題です。 出現確率が次の通りであるような記号AからFがある。 このとき、 1 2023/01/26 12:16
- 数学 以下の問題が分かりません。 8ビット浮動小数点数が、最上位ビットから順に符号1ビット、指数部3ビット 4 2023/07/22 16:06
- 高校 有効数字計算 確定した値を含む 2 2023/01/18 06:03
- 情報処理技術者・Microsoft認定資格 情報技術の問題についてです。 10進数の−36を以下のような16ビットの浮動小数点表示にするといくつ 3 2022/05/21 19:53
- 麻雀 麻雀の点数計算の質問です。 写真にある計算だとロン上がりのソーズの5も2符として計算されていますがソ 2 2022/10/10 16:00
- 数学 ごめんなさい l=⎡-log2P(ai)⎤ と 1 2022/12/05 12:25
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
救難信号SOSの打電について
-
日曜日の診察料
-
浮動小数点の正規化方法について
-
ACCESS 宛名ラベル(レポート...
-
PN9によるBER測定
-
補数を利用した引き算について
-
アセンブラについて初歩の質問
-
1億x1億はいくらでしょうか?
-
10分の1は「10/1 それとも1/10...
-
5進法を10進法への直し方
-
「最大300字程度」
-
50以下は“50”も入るのですか?
-
実績を積むという表現
-
エクセル関数で源泉徴収額を計...
-
100以下の自然数のうち、次のよ...
-
16進小数0.Cを10進数小数に変換...
-
高窓(ハイサイド窓)を平面図...
-
1.6dLは、何L何dLですか? 問題...
-
平行の記号
-
3桁の自然数の中で、次の個数を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
アクセスのデータ型。数値型に...
-
写真の数値は1302でしょうか? ...
-
COBOL 9(02)で定義した変数にマ...
-
固定小数点数、浮動小数点数に...
-
PN9によるBER測定
-
FP4という浮動小数点演算4桁の...
-
浮動小数点
-
8ビットのグレイ符号10110110お...
-
Excelで符号の変化をカウントす...
-
ACCESS 宛名ラベル(レポート...
-
テーブルに小数点以下の値を入...
-
看護情報の教科なんですが計算...
-
2ビットの全加算器
-
FORTRANでfloat(a)
-
日曜日の診察料
-
IEEEの浮動小数点表現
-
567.8の10進数を正規化の仕方が...
-
浮動小数点形式の問題
-
浮動小数点法での2進数変換
-
中高年の寡婦加算について
おすすめ情報