ホームページ  >  記事  >  バックエンド開発  >  コンピューターの数値計算はすべて 2 進数ですが、エンコーディングが異なると異なる 2 進数が生成されるのでしょうか?

コンピューターの数値計算はすべて 2 進数ですが、エンコーディングが異なると異なる 2 進数が生成されるのでしょうか?

WBOY
WBOYオリジナル
2016-08-04 09:20:101256ブラウズ

例えば、2*3を計算する場合、コンピュータはまずバイナリに変換して計算します。異なるエンコード形式であれば、別のバイナリに対応しますか?

返信内容:

例えば、2*3を計算する場合、コンピュータはまずバイナリに変換して計算します。異なるエンコード形式であれば、別のバイナリに対応しますか?

はい、エンコーディングが異なればデータを記録する方法も異なりますが、当然ながらそれらも同様です。

エンコーディングは主に文字列を対象とします。デジタル ストレージもビッグ エンディアンとスモール エンディアンの順序に分けられますが、これらはすべて異なるバイナリ データ記録ルールの表れです。


質問者には、最初に明確にする必要があるいくつかの基本概念があります。

まず第一に、あなたが話しているのは、ソースコード内の「2*3」である必要があります。ソースコードファイルの文字エンコーディングは異なる場合があり、バイナリ表現も異なります。次に、「計算」について言及しましたが、マシンコードを生成する場合は、実行する前にターゲットコードを生成するためにまずコンパイルする必要があります(CPU命令によって解釈または実行されるかどうか)。次に、同じマシン上でデジタルストレージのフォーマットを実行します。それは同じだ。仮想マシンによって生成されたバイトコードの場合、数値形式はバイトコードのエンコーディングと同じになります。

まずデータの種類を理解する必要があります。 2*3 の計算は、10*11 (バイナリ) という 2 つの整数の計算です。異なるアーキテクチャに置くと、整数の長さが異なるだけになります。

あなたが言及したエンコーディングは、たとえば、2と3のASCIIはそれぞれ0110010と0110011です。これは計算には使用されません。

はい、任意のエンコーディングを使用し、必要に応じて保存できます。

しかし、計算結果は同じでなければなりません。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。