INTEL厨 vs AMD厨 Part34

このエントリーをはてなブックマークに追加
486 ◆Rb.XJ8VXow
>>483
なるほどじゃー解説をして貰おう。
そうだな・・・・>>346のコードを使うことにする。

unsigned short int jis2sjis(unsigned short int code)
{
unsinged short int first;
unsigned char second;

first = (((code - 0x5f00) >> 1) & 0x7f00) ^ 0xe000;
second = (code & 0xff) + ((code & 0x100)? 0x1f : 0x7d);
return (first + second + ((second < 0x7f) ? 0 : 1));
}

さて、まずは1行目の説明をしてくれ

1)0x5f00を引いているのは何故だ?
2)0x5f00より大きな数字でも他の値を変えれば無問題?
3)右に1bitシフトしているのは何故だ?
4)0x7f00と論理積は何の為だ?
5)0xE00で排他ORしている理由を述べよ。
6)上位バイトに付いてsjisはxA0〜xDFの分断があるが、それをどのような考え方で実装しているか述べよ。

さてと、解答待っているぜ♪