Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.08.2009, 11:08   #1
Никки
Форумчанин Подтвердите свой е-майл
 
Аватар для Никки
 
Регистрация: 20.11.2007
Сообщений: 500
Восклицание Как наложить битовую маску?

Мне нужно наложить битовую маску на число в 10-ой форме, при этом маска тоже дана в десятичной форме, например:

есть число 28, на него надо наложить маску 21 в результате получить надо десятичное число в котором биты помеченные в маске 1 будут взяты от числа 28, а все остальные биты будут заменены на нули!

никогда не использовал битовую маску поэтому не представляю даже что делать...
Никки вне форума Ответить с цитированием
Старый 14.08.2009, 11:09   #2
Никки
Форумчанин Подтвердите свой е-майл
 
Аватар для Никки
 
Регистрация: 20.11.2007
Сообщений: 500
По умолчанию

И ещё... всё это в C#...
Никки вне форума Ответить с цитированием
Старый 14.08.2009, 12:48   #3
Никки
Форумчанин Подтвердите свой е-майл
 
Аватар для Никки
 
Регистрация: 20.11.2007
Сообщений: 500
По умолчанию

всё! уже сам сделал!

кому интересно можете пользоваться:

Код:
private int ApplyMask(int d, int m)
        {
            int r = 0;
            for (int j = 0; j <= (кол-во бит в числе); j++)
            {
                int td = d >> j;
                int tm = m >> j;
                if (tm % 2 == 1 && td % 2 == 1)
                    r += Convert.ToInt32(Math.Pow(2, j));
            }
            return r;
        }

Последний раз редактировалось Никки; 14.08.2009 в 14:34.
Никки вне форума Ответить с цитированием
Старый 14.08.2009, 13:25   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Никки,
1) у меня ваш код вообще не компилился (требовал приведения типа double к int на этой строчке: r += Math.Pow(2, j); (я написал так:
r += Convert.ToInt32(Math.Pow(2, j))

2) НО. ЗАЧЕМ ВСЕ ЭТИ СЛОЖНОСТИ!?
Почему не написать так ??!!
Код:
int ResMask = 21 & 28;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.08.2009, 14:33   #5
Никки
Форумчанин Подтвердите свой е-майл
 
Аватар для Никки
 
Регистрация: 20.11.2007
Сообщений: 500
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
2) НО. ЗАЧЕМ ВСЕ ЭТИ СЛОЖНОСТИ!?
да, вы правы! можно и так было тоже сделать! но я привел не всё функцию которую написал, у меня в ней выполняются ещё кое какие операции необходимые мне...
Никки вне форума Ответить с цитированием
Старый 14.08.2009, 14:34   #6
Никки
Форумчанин Подтвердите свой е-майл
 
Аватар для Никки
 
Регистрация: 20.11.2007
Сообщений: 500
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
r += Convert.ToInt32(Math.Pow(2, j))
да, спасибо за исправление!! когда удалял лишнее случайно и это удалил...
Никки вне форума Ответить с цитированием
Старый 28.08.2009, 13:01   #7
musomoh
Пользователь
 
Регистрация: 17.08.2009
Сообщений: 11
По умолчанию

Кстати, есть удобная функция для отображения десятичного числа в различных системах - Convert.ToString(десятичное число, система счисления).
Код:
using System;
using System.IO;

class BitView
{
	public static void Main()
	{
		string s_in;
		int a;
		Console.Write("\r\n Введите число: ");
		s_in = Console.ReadLine();
		a = Convert.ToInt32(s_in);
		Console.WriteLine("\r\n Число {0} в двоичной форме = {1}", s_in, Convert.ToString(a, 2));
		Console.WriteLine(" Число {0} в восьмеричной форме = {1}", s_in, Convert.ToString(a, 8));
		Console.WriteLine(" Число {0} в шестнадцатеричной форме = {1}", s_in, Convert.ToString(a, 16));
	}
}
musomoh вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать маску цены в TMaskEdit? cLiFFero Помощь студентам 7 25.08.2010 15:09
Ссылку наложить на флешку zavodilo JavaScript, Ajax 2 24.03.2009 16:46
Как правильно составить маску? Pavell PHP 1 05.01.2009 15:58
Как создать маску ввода даты в TextBox? AnnNet Microsoft Office Excel 6 24.07.2008 10:42
Как наложить иконку с исходным размером 16х16 на битмап с размером 32х32? SkAndrew Мультимедиа в Delphi 1 26.04.2008 14:44