【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください

現在Microsoft Visual C++ 2010 Expressでプログラミングの勉強中なのですが、

2の補数計算で

”100000004466FFFFFFFFFFFFFFFFFFFFFFFFFFFF”

この数値の加算後の2の補数を行った際に

最終的にiToal = 3756
となり、最後に次のプログラムを実行しました。


iHosu = ~iTotal; // 1の補数
iHosu++; // +1
sprintf( cAns, "%s%02X%c", cOrg, iHosu, 0x22 );


最終的には結果が
”100000004466FFFFFFFFFFFFFFFFFFFFFFFFFFFF54”

と出てほしいのですが、
”100000004466FFFFFFFFFFFFFFFFFFFFFFFFFFFF154”

とでます。

iHosuの下2桁の文字だけを文字列につけるようにしたいのですが、どうしたらよいでしょうか?

A 回答 (2件)

「必要なところ」のみが取り出せるよう, 適切な演算をしてください.

    • good
    • 0
この回答へのお礼

回答頂きありがとうございます。

iHosu = ~iTotal; // 1の補数
iHosu++; // +1
iHosu = iHosu & 0x00FF;
sprintf( cAns, "%s%02X%c", cOrg, iHosu, 0x22 );
printf( "%s\n", cAns ); //文字列結果」

このようにすることでできるようになりました。助かりました。

お礼日時:2011/11/08 17:37

iHosu = ~iTotal; // 1の補数


iHosu++; // +1
iHosu &= 0xff;
sprintf( cAns, "%s%02X%c", cOrg, iHosu, 0x22 );

>と出てほしいのですが、
>”100000004466FFFFFFFFFFFFFFFFFFFFFFFFFFFF154”
>とでます。

注意力が不足している。

”100000004466FFFFFFFFFFFFFFFFFFFFFFFFFFFF154”

ではなくて

”100000004466FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF154”

が出ている筈だ。「F」の個数を良く数えてみなさい。
    • good
    • 0
この回答へのお礼

回答頂きありがとうございます。現在私はATmega88というマイコンのプログラミングなどをしているのですが、このマイコンのEEPROMメモリーの内容を書き換える際にテキストファイル化されたインテルHEXというテキストを扱うときがあり、データの編集をテキストエディタで行う際に2の補数計算が必要になります。

int型が32ビットなので、FFFFF154が後ろに付くと思うのですが、インテルHEXファイルのフォーマットなのでしょうがこの中の54の部分のみが必要になるようです。


なるべくなら、54以外の文字列を消したいと考えています。

お礼日時:2011/11/08 15:43

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報