バイトとワードの変換はコンパイラーではどのように行なわれますか?

例えは次の式を見てみます。:

	bytevar = wordvar;

この式では、wordvarの上位バイトが失われます。つまり、bytevar = wordvar & 0xff; と同じことです。:

	bytevar = wordvar & 0xff;

上位バイトを取り出すには次の式を用います。: 例えば:

	bytevar = wordvar >> 8;

ワードとバイトの比較を行なってみるとどうでしょうか。例えば:

	wordvar= 0x1234;
	bytevar= 0x34;
	if(wordvar==bytevar) //will be FALSE

結果は、FALSEです。比較をする場合、bytevarは0x34ではなく、0x0034となります。このため 0x1234 != 0x0034でFALSE。 次に、byte値の演算で次の例を見てください。

	bytevar1 = 0x80;
	bytevar2 = 0x04;
	wordvar = bytevar1 * bytevar2; //wordvar will be 0

結果は、0です。0x200とはなりません。 そこで正しく演算結果を得るために次のように書き直します。:

wordvar = (long) bytevar1 * (long) bytevar2; //wordvar will be 0x200