- ベストアンサー
ビットスワップとバイトスワップとは何ですか??
こんにちは。 今、C言語でのプログラミングについて勉強しているのですが、 その際の課題で、「32bit値を入力するとビットスワップされた結果とバイトスワップされた結果が 表示されるプログラムを作成して下さい(入力及び表示は16進数)」といったものが出されました。 で、その際のビットスワップとバイトスワップの意味がわからず、困っています。 どんな結果が出力されたら良いのか、ご教授いただけませんでしょうか? どうかよろしくお願いいたします。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
スワップ(swap);交換する 対象が2箇所なら互いに入れ替える、つまり交換するだけなんですが、 3箇所以上の場合はどこをどう入れ替えるのか、「スワップ」だけでは明確に言えてません。 その場合はやはり「左右の並びを逆に入れ替える」のが妥当だと思います。 あと、「ビット」「バイト」は「何ビット単位を一かたまりに扱うか」という事です。 言わずもがな、バイトなら8bit単位です。 元データが32ビットで、例えば 0x1234_5678 = 0001_0010_0011_0100_0101_0110_0111_1000 だとしたら、 ビットスワップ後は 0x1E6A_2C48 = 0001_1110_0110_1010_0010_1100_0100_1000 で、 バイトスワップ後は 0x7856_3412 = 0111_1000_0101_0110_0011_0100_0001_0010 になる事を期待してると思います。
その他の回答 (5)
- hashioogi
- ベストアンサー率25% (102/404)
#1です #4殿のご指摘の通りです。 「私はバイトスワップを 1234abcd(16進) を cdab3412 と推測します」 の間違いです。 すいません。お恥ずかしい限りです。
- wormhole
- ベストアンサー率28% (1626/5665)
他の回答者も書かれていますがスワップは通常2つのものを交換することなので例えば変数a,bが a=1, b=99 だったものを a=99, b=1 にするような事です。 なのでバイトスワップといった場合は2バイト値(1バイト8ビットとすると16ビット値)の1バイト目と2バイト目を交換といったことが多いです。 なので課題を出された方本人に聞かないことには、課題を出された方の意図するバイトスワップ、ビットスワップの意味はわからないと思います。
- umamimi
- ベストアンサー率39% (144/362)
No.1さん> >バイトスワップは >12ab(16進) >を >ba21にすることかなと それだと4bit単位、言うなれば「ニブルスワップ」では?
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
スワップ(swap)とは「入れ替える/交換する」の意。 なので ドコとドコを交換するか が与えられない限り答えられない。 # ANo.1 では ビット順/バイト順 の逆転 と推測してはります。
- hashioogi
- ベストアンサー率25% (102/404)
出題者の気持ちはよく分かりませんが、私は ビットスワップは 00000000000000000000000000000010(2進) を 01000000000000000000000000000000 にすること、 バイトスワップは 12ab(16進) を ba21にすることかなと推測します。あくまでも推測です。
お礼
課題作成者に確認したところ、ご回答いただきました通りの意図だったようです。 丁寧なご説明ありがとうございました。大変勉強になりました。