
引数で渡されたデータの最上位ビット偶数パリティを付加する以下の関数について、空欄(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ランキング
-
Visual C++ フレームを中央に表...
-
C++ bmp 透過処理
-
C言語プログラミング 漸化式に...
-
ヒストグラム均等化処理プログラム
-
C言語の関数について。
-
16bitで乱数を生成する方法
-
nCrの計算
-
並列処理プログラム
-
カレンダークラス
-
シェアウェアの作り方
-
C言語でDOS画面のプログラム(...
-
returnの使い方
-
DXライブラリによるパズルゲー...
-
偶数パリティ
-
whileとifを使い偶数を出すには
-
Pythonで入力した値以外の最大...
-
C言語で簡単なパックマンゲーム...
-
direct3dで当たり判定
-
再起呼び出しの回数をカウント...
-
| (or) を使った関数の引数の作...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
2の補数を計算するプログラム
-
intとlongは同じ?
-
条件が多い場合
-
再起呼び出しの回数をカウント...
-
argvのNULLチェック
-
C言語でDOS画面のプログラム(...
-
カードシャッフルのブログラム...
-
c++ TCHARで文字化け
-
複数の共有メモリの作成
-
C++ Debug Errorについて教えて
-
C++ bmp 透過処理
-
関数とビット列
-
OpenCVによる4値化について
-
コマンドプロンプトのウィンド...
-
ヌメロンのプログラム
-
for 分についてです
-
DXライブラリとC言語 fwrite関...
-
16bitで乱数を生成する方法
-
プログラミングに関して
-
C++で表を作成したいのです ...
おすすめ情報