1

私はコンピューターサイエンスの本で整数データ形式を学んでいますが、整数のバイナリ表現が正か負かに関係なく、左端のビット (msb) を正の場合は 0 または負の場合は 1 にすることを理解している限り、 8 ビットのコンピューターで、基数 10 で 10000010 - 130 について話しているのか、それともマイナス 2 について話しているのかをどのように知ることができますか? 間違っているかもしれませんが、もしよろしければ訂正してください。

4

2 に答える 2

3

どこかで文字列を見ただけだ10000010としたら、わかりません... 壁か何かに書かれていますが、どうやってそれを解釈するかを知ることができますか?

これは 1000 万と 10 (基数 10 だと思っていた) と言うかもしれませんし、-126 (2 の補数バイナリだと思っていた) と言うかもしれませんし、正の 130 (と思っていた) と言うかもしれません)標準バイナリ)。

理論的な意味では、それがどのように解釈されるかは、解釈を行っているもの次第です。

したがって、コンピューターが 8 ビットのデータを保持している場合、それをどのように解釈するかはコンピューター次第です。

プログラミングをしている場合は、何かをどのように解釈したいかをコンピューターに伝えることができます。たとえば、C++ では

// char is 1 byte
unsigned char x = 130u;

ここでは、符号なしの130 を 1 バイトに入れるようにコンパイラーに指示したので、コンピューターはそれを値 130 として保存10000010し、解釈します。

今考えます

// char is 1 byte
char x = -126;

ここでは、符号付き-126 を 1 バイトに入れるようにコンパイラーに指示したので、コンピューターは再び格納します10000010が、今回は値 -126 として解釈します。

于 2013-07-08T21:44:48.650 に答える
2

この質問に投稿された回答を見てください

CPU はオペコードと呼ばれるものを使用して、メモリ位置 (この場合は値 10000010) を操作するときに使用する機能を決定します。それを負の数または正の数として操作するのは、CPU 内のその関数です。CPU は、数値が符号付きであるか符号なしであるかにアクセスできません。数値を操作するときに演算コードを使用して、符号付き演算か符号なし演算かを判断します。

于 2013-07-08T21:40:29.617 に答える