Битовые операции,с двумя числами.C#

Задание:написать программу на c#, которая позволит ввести два целых числа с клавиатуры по отдельности(сначала первое,затем второе), найти и вывести на дисплей их произведение, используя битовые операции сделать в нем, чтобы 7, 5 и 3 биты были равны 0, а остальные сохранили свои значения, вывести результат

Правильно ли я делаю?

using System;

class Program
{
    static void Main(string[] args)
    {
        int n1;
        int n2;

        Console.Write("Введите первое число: ");
        n1 = Convert.ToInt32(Console.ReadLine());

        Console.Write("Введите второе число: ");
        n2 = Convert.ToInt32(Console.ReadLine());

        int pr = n1 * n2;

        
        pr &= ~((1 << 7) | (1 << 5) | (1 << 3));

        Console.WriteLine("Результат: " + pr);
    }
}

Ответы (1 шт):

Автор решения: MBo

Да, делаете правильно, если ваши преподаватели считают биты, начиная с нулевого (младший) - бывает, что младший называют первый.

Вот как можно проверить - сделать произведение чисел таким, чтобы его битовое представление содержало только единицы (числа вида 2^k-1), и выполнить обнуление нужных битов. Пример для 0b111111111=511=7*73:

    int n1 = 7;
    int n2 = 73;
 
    int pr = n1 * n2;
 
    Console.WriteLine("Произведение: " + pr + " Binary: " + Convert.ToString(pr, 2));
 
    pr &= ~((1 << 7) | (1 << 5) | (1 << 3));
 
    Console.WriteLine("Результат   : " + pr + " Binary: " + Convert.ToString(pr, 2));

Выдача:

Произведение: 511 Binary: 111111111
Результат   : 343 Binary: 101010111
→ Ссылка