Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.96/26: Рейтинг темы: голосов - 26, средняя оценка - 4.96
2 / 2 / 0
Регистрация: 24.04.2010
Сообщений: 41
1

Битовая маска

08.07.2011, 13:48. Показов 4791. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день!
Есть следующая задача - нужно хранить дни недели, по которым работает предприятие. Я это предполагаю сделать через битовую маску, нашел следующий код:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
function working_days(){ 
    $days = 7;
    $working_days = 0;
    $formValue = array($_POST['mon'], $_POST['tue'], $_POST['wed'], $_POST['thu'], $_POST['fri'], $_POST['sat'], $_POST['sun']);
    for($i = 0; $i < $days; $i++){
        if($formValue != 0){
            $working_days |= $formValue[$i] << $i;
        }
    }
        
    return($working_days);
}
Собственно вопрос - как из переменной $working_days получить массив вида array(0,0,0,0,0,0,0)?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.07.2011, 13:48
Ответы с готовыми решениями:

Маска ввода
Всем Доброго времени суток. Такой вопрос возник как задать маску ввода типа DD.MM.YYYY в инпут...

Маска mail
Можно пример проверки на истинность ввод данных эл. почты формата user@domein.ru. Я думаю вы поняли...

Маска для input
Привет, друзья! Есть инпут, человеку, например, нужно ввести ссылку на свою страницу в ВК. Можно...

IP маска. Первые цифры до двух точек
Как получить первые цифры ip до двух точек? Тоесть что бы с ip 58.389.240.120, 3.21.157.587 или...

6
13208 / 6596 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
08.07.2011, 15:00 2
Способ 1, математический:
PHP
1
2
3
4
5
6
7
8
$working_days = 0x4b; // -s-- t-tm
$a = array();
$i = 0x1;
while ($i < 0x80) {
    $a[] = (int)(bool)($working_days & $i);
    $i <<= 1;
}
print_r($a);
Способ 2, нематематический:
PHP
1
2
3
$working_days = 0x4b; // -s-- t-tm
$a = str_split(strrev(substr(str_pad(decbin($working_days), '0', 7), 0, 7)), 1);
print_r($a);
2
2 / 2 / 0
Регистрация: 24.04.2010
Сообщений: 41
08.07.2011, 17:35  [ТС] 3
Можно поподробнее насчет 0x4b, 0x1, 0x80? Что это и с чем его едят?
0
13208 / 6596 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
08.07.2011, 17:55 4
0x - это шестнадцатиричная запись числа. 0xFF == 255, 0x80 == 128.
0x4B - это 0100 1011, что значает Вс, Чт, Вт и Пн, если я правильно понял.
0
2 / 2 / 0
Регистрация: 24.04.2010
Сообщений: 41
08.07.2011, 19:18  [ТС] 5
В общем решение с шестнадцатеричной системой мне не очень понравилось, поэтому я придумал следующую вещь:
PHP
1
2
3
4
5
6
7
8
9
function working_days_reverse($working_days){ 
    $days = 7;
    $formValue = array();
    for($i = 0; $i < $days; $i++){
        $formValue[$i] = (pow(2,$i) & $working_days) != 0 ? 1 : 0;
    }
        
    return($formValue);
}
Но все равно спасибо за помощь! =)
0
13208 / 6596 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
08.07.2011, 19:22 6
Цитата Сообщение от HerrPotapov Посмотреть сообщение
В общем решение с шестнадцатеричной системой мне не очень понравилось, поэтому я придумал следующую вещь
Честное слово, Вы написали то же самое, только через изврат.
0
2 / 2 / 0
Регистрация: 24.04.2010
Сообщений: 41
08.07.2011, 19:28  [ТС] 7
А я то думал я умный. У новичков случается =D
Буду сейчас с Вашим примером разбираться =)
0
08.07.2011, 19:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.07.2011, 19:28
Помогаю со студенческими работами здесь

Маска
Собственно нужно, чтобы if проверял переменную против маски. Типа if($a=**.**.****), но как это...

Битовая маска
Добрый день! Подскажите пожалуйста вот с каким вопросом: У меня есть битовая маска. Допустим, 0000....

битовая маска
надо разработать функцию проверки правильности битовой маски. 32-х битная “маска” считается...

Битовая маска
Как в шифровании битовыми перестановками применить маску?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru