![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
引数で渡されたデータの最上位ビット偶数パリティを付加する以下の関数について、空欄(1)~(3)に入る値または式について、考えているのですが、どうしても分かりません。自分なりに出した回答について、ご指摘や解説をいただければと思います。
void AddParity(unsigned int :src)
{
int bit;
int cnt;
int i;
bit = sizeof(int) : { (1) };
for (i = 0, cnt = 0;{ (2) }; i++){
if (*src & (1 << i))
cnt++;
}
if (cnt & 1)
*src |= 1 << (bit -1);
else
*src{ (3) } ~(1 << (bit -1));
}
(1)について
変数「bit」の初期値設定ですが、sizeof関数に何を乗じるのか分かりません。
(2)について
for文の条件についてですが、「cnt < ??」
だとは思うんですが、??が分かりません。
(3)について
シフト演算で、偶数パリティを付加する処理だろうとは思うんですが、
何が入るのか分かりません・・・
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
ANo.3です
0x8001ではなくて0x80000001が上手く処理できないでした ・・・
ヒント
(1)は unsigned intのビット数 … sizeof演算子は何の単位を返すのか
(2)は 0ビット目から何ビット目まで繰り返すのか
(3)は パリティ付加するのは(3)の位置ではなくその前のif文の条件が成立した方です、こちらはパリティをリセットするための処理です
No.2
- 回答日時:
> (1)について
> 変数「bit」の初期値設定ですが、sizeof関数に何を乗じるのか分かりません。
sizeof関数が何を求める関数かを考えれば答えは出ます。
> (2)について
> for文の条件についてですが、「cnt < ??」だとは思うんですが
違いますよ。
全ビットのチェックをしたいので(1)のbitを使います。
> if (cnt & 1) ・・・奇数なら
> *src |= 1 << (bit -1); ・・・1をセット
> else ・・・偶数なら
*src{ (3) } ~(1 << (bit -1)); ・・・0をセットします。
※8ビットの場合 ~(1 << (bit -1)) を2進で表すと 01111111 となります。
ご回答ありがとうございます。
sizeofはコンパイラが変数に割り当てる記憶領域の大きさを、バイト単位で返す演算子だというのは知っているんですが、分かりませんでした・・・。
あと、一部間違ってましたので訂正させてください。
誤)
bit = sizeof(int) : { (1) };
正)
bit = sizeof(int) * { (1) };
です。
(2)については、bitをどのように使用して条件とするのか見当もつかないです・・・
(3)は何とか分かりそうなので考えてみます。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- Visual Basic(VBA) VBA初心者です。 VBAで行単位で条件付き書式の色をカウントしたいです。 大量のデータがあるExc 3 2022/06/08 10:02
- Visual Basic(VBA) VBA初心者です。 VBAで行単位で条件付き書式の色をカウントしたいです。 大量のデータがあるExc 3 2022/06/08 10:00
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
- C言語・C++・C# C言語 3 2022/11/09 13:27
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- 大学・短大 C言語線形リストの問題です 3 2022/12/22 00:45
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
おすすめ情報