Битовые операции,с двумя числами.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 шт):
Да, делаете правильно, если ваши преподаватели считают биты, начиная с нулевого (младший) - бывает, что младший называют первый.
Вот как можно проверить - сделать произведение чисел таким, чтобы его битовое представление содержало только единицы (числа вида 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