引数で渡されたデータの最上位ビット偶数パリティを付加する以下の関数について、空欄(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を探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・「黒歴史」教えて下さい
- ・2024年においていきたいもの
- ・我が家のお雑煮スタイル、教えて下さい
- ・店員も客も斜め上を行くデパートの福袋
- ・食べられるかと思ったけど…ダメでした
- ・【大喜利】【投稿~12/28】こんなおせち料理は嫌だ
- ・前回の年越しの瞬間、何してた?
- ・【お題】マッチョ習字
- ・モテ期を経験した方いらっしゃいますか?
- ・一番最初にネットにつないだのはいつ?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・2024年に成し遂げたこと
- ・3分あったら何をしますか?
- ・何歳が一番楽しかった?
- ・治せない「クセ」を教えてください
- ・【大喜利】【投稿~12/17】 ありそうだけど絶対に無いことわざ
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・集合写真、どこに映る?
- ・自分の通っていた小学校のあるある
- ・フォントについて教えてください!
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・10代と話して驚いたこと
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
intとlongは同じ?
-
C#メール受信から件名、本文を...
-
再起呼び出しの回数をカウント...
-
C言語 エラーの原因がわからな...
-
比較回数と交換回数表示について
-
C言語での引数の省略方法
-
2÷3などの余りについて
-
C言語で台形公式を使った二重積...
-
C言語で質問します
-
マイナスからプラスへ転じた時...
-
O(n log n)について2
-
C# Controls.Addで動的に配置し...
-
正の数aは4の倍数で、7でわると...
-
信頼区間の1.96や1.65ってどこ...
-
複数桁10進数の*桁目だけを抽出...
-
配列をnビットシフトする
-
break文でループを一気に抜ける...
-
CStringのFindで文字列検索を行...
-
C#でテンキーの操作は可能でし...
-
文字列配列のほしい部分だけを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
2の補数を計算するプログラム
-
intとlongは同じ?
-
再起呼び出しの回数をカウント...
-
カードシャッフルのブログラム...
-
コマンドプロンプトのウィンド...
-
再帰処理をループ処理に変換
-
条件が多い場合
-
C++で表を作成したいのです ...
-
C言語で%を使わない余りの出し方
-
C言語のプログラムについて(...
-
【C#】SQL文の中に変数を埋め込...
-
OpenCVによる4値化について
-
迷路を脱出する経路探索プログ...
-
画像の拡大・縮小
-
C++ Debug Errorについて教えて
-
C言語で簡単なパックマンゲーム...
-
直線補間について
-
argvのNULLチェック
-
| (or) を使った関数の引数の作...
-
2次関数プログラムを描写する...
おすすめ情報