バイトとワードの変換はコンパイラーではどのように行なわれますか?
例えは次の式を見てみます。:
この式では、wordvarの上位バイトが失われます。つまり、bytevar = wordvar & 0xff; と同じことです。:
上位バイトを取り出すには次の式を用います。: 例えば:
ワードとバイトの比較を行なってみるとどうでしょうか。例えば:
結果は、FALSEです。比較をする場合、bytevarは0x34ではなく、0x0034となります。このため 0x1234 != 0x0034でFALSE。
次に、byte値の演算で次の例を見てください。
結果は、0です。0x200とはなりません。
そこで正しく演算結果を得るために次のように書き直します。:
bytevar = wordvar;
bytevar = wordvar & 0xff;
bytevar = wordvar >> 8;
wordvar= 0x1234;
bytevar= 0x34;
if(wordvar==bytevar) //will be FALSE
bytevar1 = 0x80;
bytevar2 = 0x04;
wordvar = bytevar1 * bytevar2; //wordvar will be 0
wordvar = (long) bytevar1 * (long) bytevar2; //wordvar will be 0x200