Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.64/47: Рейтинг темы: голосов - 47, средняя оценка - 4.64
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3463 / 2784 / 575
Регистрация: 04.09.2018
Сообщений: 8,757
Записей в блоге: 3

Определение изменения бит в байте

27.08.2021, 19:18. Показов 11291. Ответов 128

Студворк — интернет-сервис помощи студентам
Всем ку!
Возник вопрос по оптимальному методу определения изменившихся бит в байте.
Два байта прилетают по сети и имеют следующий вид:

Суть в следующем (на примере байта Е8):
0-й, 3-й и 6-й биты "работы", говорят о включенном или выключенном состоянии участка. 1-й, 2-й, 4-й, 5-й, ... биты - определения сторон (L/R) соотв. участков. Они всегда находятся в одном из двух состояний: 01 либо 10. Состояний 00 или 11 не бывает.
Так вот, в идеале, требуется определить момент смены состояний, допустим с 01 на 10, при установленном бите "работы".
Если бит "работы" не установлен, то изменения состояний бит сторон пофигу.
Пока я делаю это так (без учета бита "работы"):
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
            if ( _byte != _oldByte )
            {
                int _change = _byte ^ _oldByte;
 
                for ( int i = 7; i > -1; i-- )
                {
                    if ( ( _change >> i & 1 ) == 1 ) 
                    { 
                        lstSndIndex.Add( i ); //здесь запись в лист индекса изменившихся бит для последующей отправки в сеть
                    }
                }
 
                _oldByte = _byte;   
            }
т.е. я сравниваю текущее состояние с некоторым прошлым значением.
Можно ли как-то сделать иначе?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.08.2021, 19:18
Ответы с готовыми решениями:

Поменять порядок бит в байте
Есть некий байт, необходимо порядок его первых 3х бит поменять на обратный! Подскажите Добавлено через 6 минут По сути надо 0 и 2...

Обмен двух бит в байте местами
Например, требуется обменять местами 2-й и 3-й бит в байте, если один из них == 1. Можно сделать это так: int _byte = 9; //...

В байте не восемь бит.
Мне знакомый показал статейку следующего вида: Внимание! Путаница в терминологии. Читать всем! zaff » 14 авг 2009, 18:09 ...

128
1534 / 541 / 127
Регистрация: 09.01.2018
Сообщений: 1,758
31.08.2021, 11:56
Лучший ответ Сообщение было отмечено wizard41 как решение

Решение

Студворк — интернет-сервис помощи студентам
Элд Хасп, ну я уж не знаю ). То ли вы код, который пишите не видите, то ли что еще.

Ок, давайте ваш последний тест:
Включаем первую и пятую - ОК включилось
Отключаем первую - Отключили? Ну она же не отключена. Какое состояние на контроллере?

Цитата Сообщение от Элд Хасп Посмотреть сообщение
Он и не должен отправлять, поскольку состояние выходных битов не изменяется.
Линию надо отключить. Но отправки нет, линия работает.

Что касается кода, я подставлял в переменную oldReceived значение, которое было получено последним. У вас там происходит нечто странное, смысла которого я не понял. Отсюда и разные результаты у нас с вами.

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

1. Получаем новое состояние
2. Формируем 5 пар битов для отправки
3. Сверяемся с текущим состоянием контроллера (для этого храним его, вместо старого значения полученных байтов)
4. Если есть изменения - отправляем
5. Сохраняем текущее состояние контроллера.

Добавлено через 33 минуты
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
using System;
 
namespace BitTestSymCF
{
    class Program
    {
        static void Main(string[] args)
        {
            BridgePorts(0b_011_100_010_100_011); //включаем 1-ю и 5-ю
            BridgePorts(0b_011_100_010_100_010);  //отключаем 1-ю
            BridgePorts(0b_011_101_011_100_010);  //включаем 3-ю и 4-ю
        }
 
        // Последнее состояние контроллера
        private static int controllerState = 0;
 
        // Буферный массив для передачи
        private static readonly byte[] bytes = new byte[2];
 
        //Маска активных узлов
        private const int activeMask = 0b_001_001_001_001_001;
 
        public static void BridgePorts(int received)
        {
            lock (bytes)
            {
                var active = received & activeMask;
                var listen = (active | received & active << 1 | received & active << 2) ^ active;
 
                var currentState = 0;
                var mask = 0b_11;
                for (int i = 0; i < 5; i++)
                {
                    currentState |= (listen >> (i + 1)) & mask;
                    mask <<= 2;
                }
 
                if ((currentState ^ controllerState) > 0)
                {
                    bytes[0] = (byte)(currentState & 255);
                    bytes[1] = (byte)((currentState >> 8) & 255);
                   
                    controllerState = currentState;
 
                    DisplayBytes(bytes);
                    //SendBit(....., bytes);
                }
            }
        }
 
        static void DisplayBytes(byte[] toSend)
        {
            var v = toSend[0] | toSend[1] << 8;
            var str = Convert.ToString(v, 2).PadLeft(10, '0');
            for (int i = 0; i < 10; i++)
            {
                Console.Write(str[i]);
                if ((i + 1) % 2 == 0) Console.Write(' ');
            }
            Console.Write('\n');
        }
    }
}
Code
1
2
3
01 00 00 00 01
01 00 00 00 00
01 10 01 00 00
Здесь по тесту видно, что происходит:
1. Включается 1 и 5
2. Отключается 1 (5 работает)
3. Включается 3 и 4 (5 все еще работает)
1
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3463 / 2784 / 575
Регистрация: 04.09.2018
Сообщений: 8,757
Записей в блоге: 3
31.08.2021, 13:17  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Вообще то, я реализовал так, что в случае 001_001_001_001_001 на выходной стороне должны быть все нули.
Именно из-за этого и не сбрасывается последний участок (его сторона).
Цитата Сообщение от escoult Посмотреть сообщение
а симулируете вы что то другое, либо делаете это неправильно.
escoult, такого быть не может. Уверяю вас - я делаю все правильно. Собственно, там и делать особо нечего: включить или сбросить бит. Все.
Цитата Сообщение от escoult Посмотреть сообщение
Но у вас 1-я линия сбрасывается и работает только 5-я. Каким образом?
Ну, работает, потому что она еще не сброшена, видимо )
0
1534 / 541 / 127
Регистрация: 09.01.2018
Сообщений: 1,758
31.08.2021, 13:48
Оппс, 28-я строка. Там же все короче должно быть:

C#
1
2
                var active = received & activeMask;
                var listen = received & active << 1 | received & active << 2;
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
31.08.2021, 15:53
Цитата Сообщение от escoult Посмотреть сообщение
Отключаем первую - Отключили? Ну она же не отключена. Какое состояние на контроллере?
На контролере, если у правильно понял wizard41, последнее состояние перед отключением линии.
Оно там и есть.

Цитата Сообщение от escoult Посмотреть сообщение
Что касается кода, я подставлял в переменную oldReceived значение, которое было получено последним. У вас там происходит нечто странное, смысла которого я не понял. Отсюда и разные результаты у нас с вами.
Я же дал полный код используемый для теста с выводом полученного значения, значения выходного порта и была ли отправка.

Цитата Сообщение от escoult Посмотреть сообщение
Там же все короче должно быть:
Там многое что можно сократить.
Расписывал подробно для прозрачности и контроля самого алгоритма.

Цитата Сообщение от wizard41 Посмотреть сообщение
Именно из-за этого и не сбрасывается последний участок (его сторона).
Вы можете описать последовательность входных значений приводящих к неправильному выводу?

Что должно произойти если получен 001_001_001_001_001?
Выходной порт должен установиться на все нули?
Или на нём должно сохраняться состояние бывшее перед получением таких данных?
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3463 / 2784 / 575
Регистрация: 04.09.2018
Сообщений: 8,757
Записей в блоге: 3
31.08.2021, 19:50  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Что должно произойти если получен 001_001_001_001_001?
Выходной порт должен установиться на все нули?
Или на нём должно сохраняться состояние бывшее перед получением таких данных?
Извините, замотался по делам.
Я не сильно вдавался в ваши битовые операции, но думаю вот что:
У вас стоит условие:
C#
1
2
if ( newBits != 0 )
//...
А в конце этого if идет формирование байт для отправки и собственно - отправка:
C#
1
2
3
4
5
6
SndBytes[ 0 ] = ( byte ) ( zip & 255 );
SndBytes[ 1 ] = ( byte ) ( ( zip >> 8 ) & 255 );
 
//Запись по выходам...
err = _client.WriteArea( S7Consts.S7AreaPA, 8, 8, 2, S7Consts.S7WLByte, SndBytes );
Console.WriteLine( "Write to Out: " + _client.ErrorText( err ) );
Так вот, вы говорите что при 001_001_001_001_001 формируются нули, но они отправляются в сеть?
Дело в том, что когда включены более 1-го участка, то все идет нормально, т.к. условие if ( newBits != 0 ) всегда срабатывает. Но когда остается последний участок (любой) и он выключается(!), то мы принимаем от контроллера как раз эти 001_001_001_001_001, условие if ( newBits != 0 ) НЕ срабатывает, и конечно отправки НЕ происходит. Последний оставшийся в работе выход НЕ сбрасывается, т.к. нет такой команды.
Может быть вот эту всю конструкцию вынести ЗА блок if?
C#
1
2
3
4
5
6
SndBytes[ 0 ] = ( byte ) ( zip & 255 );
SndBytes[ 1 ] = ( byte ) ( ( zip >> 8 ) & 255 );
 
//Запись по выходам...
err = _client.WriteArea( S7Consts.S7AreaPA, 8, 8, 2, S7Consts.S7WLByte, SndBytes );
Console.WriteLine( "Write to Out: " + _client.ErrorText( err ) );
Добавлено через 26 минут
Цитата Сообщение от wizard41 Посмотреть сообщение
то мы принимаем от контроллера как раз эти 001_001_001_001_001
Точнее, мы их НЕ принимаем, и по условию маски так нули. Соответственно, условие if не срабатывает и команда 00000000_00000000 не отправляется в контроллер.
Я думаю вот что:
1. Для более наглядного представления того, что отправляется в сеть, можно перед отправкой выводить в консоль отправляемые биты.
2. Вообще, можно и вовсе не заморачиваться с приемом-передачей, т.к. этот момент вполне работоспособен и мы в этом убедились. Я уже сам там оформлю как что принимается и передается. Хорошо, что подняв этот вопрос, у меня дошли руки до разбирательства передачи байтовой информации, и это получилось.

Считаю, что достаточно формировать в консоли "правильные" входные данные, аля полученные с контроллера, производить над ними нужные операции и в конце выводить полученный результат. Т.е. фактического участия оборудования не требуется.
Единственно что, так это неудобство ввода в консоли этих "правильных ответов" от первого устройства.
Или, как вариант, заранее сформировать массив значений, соответствующий тем или иным состояниям входов, и затем при вводе указывать нужный индекс определенного состояния. Так можно вполне проконтролировать правильность алгоритма(ов).
Если у меня завтра будет время, я попробую набросать такую схему.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
31.08.2021, 20:18
Цитата Сообщение от wizard41 Посмотреть сообщение
мы их НЕ принимаем, и по условию маски так нули. Соответственно, условие if не срабатывает и команда 00000000_00000000 не отправляется в контроллер.
Если правильно понял, то 001_001_001_001_001 это, фактически, команда сброса и выход надо сбросить в нули?

Тогда такой вариант:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
        // Последнее переданное состояние
        private static int oldReceived = 0b_001_001_001_001_001;
        // Буферный массив для передачи
        private static readonly byte[] bytes = new byte[2];
        //Маска активных узлов
        private const int activeMask = 0b_001_001_001_001_001;
        public static void BridgePorts(int received)
        {
            bool isSend = false;
            lock (bytes)
            {
                // Принятые биты
                //int received = 0b_001_001_001_001_001;
 
                //Получаем активные узлы
                int active = received & activeMask;
 
                // Маска отслеживаемых бит.
                int listen = active << 1 | active << 2;
 
                // Маска изменившихся бит
                int changed = received ^ oldReceived;
 
                // Маска изменившихся отслеживаемых бит
                int changedListen = changed & listen;
 
                // Новое состояние изменившихся отслеживаемых бит
                int newBits = received & changedListen;
 
                // Сравнение с состоянием выходов.
                bool isChahged = newBits != (oldReceived & changedListen);
                if (isChahged)
                {
                    // Запоминание состояния отслеживаемых бит
                    oldReceived &= ~changedListen; // Сброс ранее сохранённого состояния бит.
                    oldReceived |= newBits; // Запись на их место новых состояний.
 
                    // Переформатирование бит
                    int input = oldReceived;
                    int zip = 0;
                    int mask = 0b_11;
                    for (int i = 0; i < 5; i++)
                    {
                        input >>= 1;
                        zip |= (input & mask);
                        mask <<= 2;
                    }
 
 
 
                    bytes[0] = (byte)(zip & 255);
                    bytes[1] = (byte)((zip >> 8) & 255);
 
                    //SendBit(....., bytes);
                    isSend = true;
                }
            }
            ConsoleWrite(received, bytes, isSend);
        }
 
        private static void ConsoleWrite(int num, byte[] bytes, bool isSend)
        {
            string bits = Convert.ToString(num, 2);
            bits = bits.PadLeft(15, '0');
            bits = $"{bits.Substring(0, 3)}_{bits.Substring(3, 3)}_{bits.Substring(6, 3)}_{bits.Substring(9, 3)}_{bits.Substring(12, 3)}\t";
            Console.Write(bits);
            bits = Convert.ToString(bytes[0] | bytes[1] << 8, 2);
            bits = bits.PadLeft(10, '0');
            bits = $"{bits.Substring(0, 2)}_{bits.Substring(2, 2)}_{bits.Substring(4, 2)}_{bits.Substring(6, 2)}_{bits.Substring(8, 2)}\t";
            Console.Write(bits);
            Console.WriteLine(isSend ? "Отправлено": "");
        }
Тест:
C#
1
2
3
4
5
6
        static void Main(string[] args)
        {
            BridgePorts(0b_011_100_010_100_011); //включаем 1-ю и 5-ю
            BridgePorts(0b_011_100_010_100_010); //отключаем 1-ю
 
            BridgePorts(0b001_001_001_001_001); // Команда сброса
Консоль:
Code
1
2
3
011_100_010_100_011     01_00_00_00_01  Отправлено
011_100_010_100_010     01_00_00_00_01
001_001_001_001_001     00_00_00_00_00  Отправлено
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3463 / 2784 / 575
Регистрация: 04.09.2018
Сообщений: 8,757
Записей в блоге: 3
31.08.2021, 20:26  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Консоль:
Code
1
2
3
011_100_010_100_011     01_00_00_00_01 Отправлено
011_100_010_100_010     01_00_00_00_01
001_001_001_001_001     00_00_00_00_00 Отправлено
Похоже на то, но обратите внимание: при отключении 1-й линии у вас посылка осталась прежней 01_00_00_00_01

Добавлено через 35 секунд
Или я что-то не понял
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
31.08.2021, 20:43
Цитата Сообщение от wizard41 Посмотреть сообщение
при отключении 1-й линии у вас посылка осталась прежней 01_00_00_00_01
Да.
Я так вас понял.
Я же этим специально интересовался, какое состояние должно быть у отключенной линии.
Вы ответили, что сохраняться, то которое было перед отключением.
А как должно быть?

Добавлено через 48 секунд
Мы обсуждали это в районе четвертого поста.
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3463 / 2784 / 575
Регистрация: 04.09.2018
Сообщений: 8,757
Записей в блоге: 3
31.08.2021, 21:49  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Мы обсуждали это в районе четвертого поста.
В то время у нас еще было глубокое недопонимание
Если линия выключается (принятый бит активности == 0), то немедленно выключаются его выхода (L/R) на целевом устройстве и потом не включаются, даже если имело место их изменение. В случае с последней выключенной линией - в сеть отправляются два байта 00000000_00000000, что гарантированно вырубает всё.

Добавлено через 5 минут
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Вы ответили, что сохраняться, то которое было перед отключением.
Не совсем. При включении линии мы все равно подхватим текущее состояние сторон, и оно будет передано в сеть.
В вашем же алгоритме это реализовано: я вчера наглядно показывал этот процесс escoult.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
31.08.2021, 22:02
Цитата Сообщение от wizard41 Посмотреть сообщение
Если линия выключается (принятый бит активности == 0), то немедленно выключаются его выхода (L/R) на целевом устройстве и потом не включаются
Ок!
Завтра это переделаю.

Цитата Сообщение от wizard41 Посмотреть сообщение
При включении линии мы все равно подхватим текущее состояние сторон, и оно будет передано в сеть.
В вашем же алгоритме это реализовано:
Да.
Но я не делал "отключение" выходов на время отключения входов.
У меня было реализовано, сохранение состояния выходов, на время выключения входов.
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3463 / 2784 / 575
Регистрация: 04.09.2018
Сообщений: 8,757
Записей в блоге: 3
31.08.2021, 22:13  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
У меня было реализовано, сохранение состояния выходов, на время выключения входов.
Понятно, ну давайте уже завтра. Кстати, новая вводная (факультативно): участок 5 работает всегда вместе с каким-то любым другим или несколькими. Один участок (любой) в одиночку не работает, но любой работающий обязательно работает с 5-ым. Но для нашего алгоритма это не должно иметь значения, т.к. он должен отслеживать текущие состояния и правильно реагировать.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
31.08.2021, 22:16
Цитата Сообщение от wizard41 Посмотреть сообщение
Один участок (любой) в одиночку не работает, но любой работающий обязательно работает с 5-ым.
Если не нужно отслеживать кривые или ошибочные входные данные, то это не важно.
Но если надо обрабатывать ошибки (я за это тоже писал ранее), то нужен алгоритмы их определения и действий при их обнаружении.
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3463 / 2784 / 575
Регистрация: 04.09.2018
Сообщений: 8,757
Записей в блоге: 3
31.08.2021, 22:25  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Если не нужно отслеживать кривые или ошибочные входные данные, то это не важно.
Так я нарочно не раскрываю всю концепцию, иначе вы сделаете тут всю работу за меня. И свой гонорар мне придется выплачивать вам
Самое смешное: банальный вопрос "как отследить изменение бита в байте" разросся на 112+ постов
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
31.08.2021, 22:27
Цитата Сообщение от wizard41 Посмотреть сообщение
банальный вопрос "как отследить изменение бита в байте" разросся на 112+ постов
Из-за неполноты всех условий задачи.
Так часто бывает когда нет полного понимания всех условий и связей в задании.
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3463 / 2784 / 575
Регистрация: 04.09.2018
Сообщений: 8,757
Записей в блоге: 3
31.08.2021, 22:31  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Из-за неполноты всех условий задачи.
Так иных условий и не стояло. Просто нужно было определить, какой бит и когда в байте был изменен и произвести некоторые действия. Но, поскольку мы зашли немного дальше этого, от сюда и...
Все завтра. Всем добра!
0
1534 / 541 / 127
Регистрация: 09.01.2018
Сообщений: 1,758
01.09.2021, 00:49
Цитата Сообщение от wizard41 Посмотреть сообщение
Кстати, новая вводная (факультативно): участок 5 работает всегда вместе с каким-то любым другим или несколькими. Один участок (любой) в одиночку не работает, но любой работающий обязательно работает с 5-ым. Но для нашего алгоритма это не должно иметь значения, т.к. он должен отслеживать текущие состояния и правильно реагировать.
Я же вам написал уже и алгоритм и код, где все включается и отключается. Вы вообще смотрите то что вам в теме пишут?

Добавлено через 7 минут
Цитата Сообщение от Элд Хасп Посмотреть сообщение
На контролере, если у правильно понял wizard41, последнее состояние перед отключением линии.
Оно там и есть.
Я спросил, какое состояние находится на котроллере. Отключена ли у вас первая линия. Она же не отключена! А вы мне пишите какие то тесты, результатов которых сами не видите.

Цитата Сообщение от Элд Хасп Посмотреть сообщение
Там многое что можно сократить.
Расписывал подробно для прозрачности и контроля самого алгоритма.
Там (в посте) код ваш только частично, я переписал его, и оставил ваши объявления переменных и название метода. Это я там намудрил со строкой и написал исправление.

Добавлено через 13 минут
Цитата Сообщение от wizard41 Посмотреть сообщение
В вашем же алгоритме это реализовано: я вчера наглядно показывал этот процесс escoult.
А это вы мне показывали?
Какой вы молодец ). Могли бы коротко написать, что биты сбрасываются, и не заниматься ерундой с картинками. Но вы что то оба, не знаете, что у вас в коде происходит. И вы не знаете, и Элд Хасп, не знает Я не понял, что там в последней части кода творится. Но он вроде бы должен знать, что задумывал.
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3463 / 2784 / 575
Регистрация: 04.09.2018
Сообщений: 8,757
Записей в блоге: 3
01.09.2021, 08:38  [ТС]
Цитата Сообщение от escoult Посмотреть сообщение
Я же вам написал уже и алгоритм и код, где все включается и отключается. Вы вообще смотрите то что вам в теме пишут?
Одним глазом поглядываю. Я немного отключился, дела... Когда включусь снова, обязательно просмотрю все еще раз.
Цитата Сообщение от escoult Посмотреть сообщение
А это вы мне показывали?
Да, показывал.
Цитата Сообщение от escoult Посмотреть сообщение
Могли бы коротко написать, что биты сбрасываются, и не заниматься ерундой с картинками.
Картинки вообще не должны были участвовать в топике. Вопрос то плевый поставлен. Но, т.к. мы углубились больше чем надо, пришлось симулировать, скриншотить и т.п.
0
1534 / 541 / 127
Регистрация: 09.01.2018
Сообщений: 1,758
01.09.2021, 09:07
Цитата Сообщение от wizard41 Посмотреть сообщение
Вопрос то плевый поставлен
Такой плевый, что вы никак не можете его решить. Не по молодцу рубаха

Цитата Сообщение от wizard41 Посмотреть сообщение
Да, показывал.
Я думал вы для себя что то выясняете. Объяснить что в коде происходит не могу, вместо этого покажу на картинках. ))
Ок, я вас понял.

Цитата Сообщение от wizard41 Посмотреть сообщение
Когда включусь снова, обязательно просмотрю все еще раз.
Да мне это как то.... Задача то ваша. Если вам нужно ее решение, вы наверное должны быть заинтересованы в его получении. Я прошел почитал, интересно - размял компилятор, нет - забыл. Проект сдавать вам. А вы тут картинки показываете, с какого то перепугу.
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3463 / 2784 / 575
Регистрация: 04.09.2018
Сообщений: 8,757
Записей в блоге: 3
01.09.2021, 09:35  [ТС]
escoult, вы напрасно все иронизируете. У меня все давно решено и работает. Вопрос на форуме задан с целью, так сказать, пообсуждать возможные иные решения. Вы зря думаете, что я настолько беспомощен, что не в состоянии разобраться в битовых операциях, масках или циклах.
0
1534 / 541 / 127
Регистрация: 09.01.2018
Сообщений: 1,758
01.09.2021, 09:43
Цитата Сообщение от wizard41 Посмотреть сообщение
вы напрасно все иронизируете
Ок, хорошо, не буду.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.09.2021, 09:43

Изменить рандомный бит в байте
Доброго времени суток. Подскажите пожалуйста, как сменить рендомный бит в считанном из файла байте? На другом языке обычно строка - это...

Порядок байт в слове и бит в байте
читал эту требуются пояснения. A B C D - адреса в них число 128 BE A B C D ...

Написать функцию, меняющую порядок бит в байте
написать функцию, меняющую порядок бит в байте. заранее спасибо

последовательность инструкций для обнуления трех старших бит регистра DH, без изменения остальных бит
Напишите последовательность инструкций для обнуления трех старших бит регистра DH, без изменения остальных бит; результат сохраните в...

Есть ли функция которая может определить сколько бит в байте?
Нужно получить количество бит из байта, может есть готовые функции возвращающие результат?


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

Или воспользуйтесь поиском по форуму:
120
Ответ Создать тему
Новые блоги и статьи
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru