【解決方法】N 番目のビットが設定されているかどうかを確認するための WAP。設定されている場合は、M 番目のビットをクリアします。


Description:

Read a number, M and N from the user. You need to check whether N th bit is set(1) or not, If yes, then you need to clear the M th bit of the number and print the updated value of num

Pre-requisites:

Bitwise operators

Sample Execution:

Test Case 1:

Enter the number: 19

Enter 'N': 1

Enter 'M': 4

Updated value of num is 3 

Test Case 2:

Enter the number: 19

Enter 'N': 2

Enter 'M': 4

Updated value of num is 19 

私が試したこと:

#include<stdio.h>
int main()
{
int num,N,M,K;
printf("Enter a number:");
scanf("%d",&num);
printf("Enter 'N':");
scanf("%d", &N);
num=num>>(N-1);
if((num&1)!=0)
{
printf("Enter 'M': ");
scanf("%d", &M);

K = num & ~(1 << M);
printf("Updated value of num is %d \n", K);
}
return 0;
}

解決策 1

私はあなたを正しい方向に向けます。

多くの回答があるGoogle検索は次のとおりです。 c チェックビット – Google 検索[^]

解決策 2

まず、これは C# ではありません。C です。似ているように見えるかもしれませんが、非常に異なる言語です。 質問に間違った言語のタグを付けると、返信を待つ時間が長くなる可能性があります…

次に、コードをインデントします。 これにより、非常に読みやすくなります。

C
#include<stdio.h>
int main()
    {
    int num,N,M,K;
    printf("Enter a number:");
    scanf("%d",&num);
    printf("Enter 'N':");
    scanf("%d", &N);
    num=num>>(N-1);
    if((num&1)!=0)
        {
        printf("Enter 'M': ");
        scanf("%d", &M);
        
        K = num & ~(1 << M);
        printf("Updated value of num is %d \n", K);
        }
    return 0;
    }

このような些細な断片化とはあまり関係がありませんが、早い段階で習慣を身につければ、後で何時間もフラストレーションを感じることがなくなります。

第三に、質問を投稿するときは、どのような問題に遭遇したかを説明する必要があります。入力した値や、入力したときに何が起こったのかはわかりません。全て!
ここで始める: 質問することはスキルです[^] そして、あなたが知る必要があること、そして助けを得るために私たちに何を伝える必要があるかを考えてください.

のN番目のビットかどうかを確認しようとするときは、 num が設定されている場合、既存の値を上書きします。つまり、ユーザーが入力した元の値がなくなるため、タスクを完了できません。
シフトする代わりに num とにかく、私はシフトします 1 左に N 桁、それを num と AND して、設定されているかどうかを確認します。

コメント

タイトルとURLをコピーしました