0

教科書から:

ここに画像の説明を入力

したがって、バイトには8ビットがあり、右ビットシフトは左に0ビットを追加し、右からビットをポップオフします。しかし、上記の例を使用してバイトを出力するにはどうすればよいでしょうか? 私は期待していたでしょう:

putchar(b >> 8)
putchar(b >> 7)
putchar(b >> 6)
etc.

putchar がポップされたオフビットを出力すると仮定するので?

4

1 に答える 1

1

putchar は、指定された整数に対応する ASCII 文字を出力します。

putchar(0x41)整数 0x41 をunsigned char(サイズが 1 バイトの) に変換し、0x41 に対応する ASCII 文字 (「A」) を出力します。

ここで重要なことは、putchar が下位 8 ビットのみを参照すること、つまり、同じことputchar(0x41)を行うことです。putchar(0xffffff41)

上記の関数に何かを渡すとどうなるか見てみましょう。

outbyte(0x41424344);

最初に b を 24 ビットだけビットシフトし、次にその値に対して putchar を呼び出します。 0x41424344 << 24; //0x00000041 putchar(0x00000041); //A

次に、b を 16 ビットだけビットシフトし、その値に対して putchar を呼び出します。 0x41424344 << 24; //0x00004142 putchar(0x00004142); //B

これが実際の動作です: http://ideone.com/3xeFSx

于 2014-09-29T18:37:58.183 に答える