Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/25: Рейтинг темы: голосов - 25, средняя оценка - 4.92
 Аватар для Jman
89 / 77 / 38
Регистрация: 11.10.2015
Сообщений: 860

Чтение бита из байта

05.08.2019, 15:17. Показов 5122. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Написал для проверки простой метод определения конкретного бита из байта. В качестве байта число 232 = 0xE8:H = 11101000.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
  public static class BitExtension
    {
        public static bool ReadBit(this byte value, int bitNumber)
        {
            if (bitNumber < 0 || bitNumber > 7)
            {
                throw new ArgumentOutOfRangeException();
            }
 
            var bit = (value & (1 << bitNumber - 1)) != 0;
            return bit;
        }
    }
В мейне делаю следующее:
C#
1
2
3
4
5
6
7
 static void Main(string[] args)
        {
            byte a = 0xE8;
            Console.WriteLine(Convert.ToString(a, 2));
            Console.WriteLine(a.ReadBit(3));
            Console.ReadLine();
        }
Вывод:
11101000
False
Чет не пойму... У меня же 3, 5-7 биты установлены.

Добавлено через 1 час 12 минут
Вуаля!
C#
1
var bit = ((value >> bitNumber) & 1) != 0;
Не с той стороны читал.
1
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.08.2019, 15:17
Ответы с готовыми решениями:

Понятие бита и байта
Не знаю куда писать, выбрал привычный для себя раздел форума. Летом окунувшись в программирование, сделал для себя вывод, что мое...

Чтение RGB значений из bmp 24 бита
Всем доброго времени суток. Вот такая проблема у меня: Есть 24-битный bmp рисунок(т.е. на каждый цвет по 8 бит). Как можно вытащить...

Чтение нужного байта из массива байтов
Подскажите плиз, как считать определнный байт из массива, есть вот такой массив byte bytes2 = { 1, 3, 56, 78 }; Необходимо...

4
 Аватар для Lexeq
1151 / 743 / 483
Регистрация: 21.01.2014
Сообщений: 1,903
05.08.2019, 15:20
Jman,
C#
1
1 << bitNumber - 1
А зачем - 1?
0
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
05.08.2019, 17:58
Лучший ответ Сообщение было отмечено Jman как решение

Решение

Jman, спасибо за тему. Хоть тряхнуть седыми кудрями
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
using System;
using System.Collections;
 
namespace Question2488540
{
    public static class BitExtension
    {
        public static bool ReadBit(this byte value, int bitNumber)
        {
            if (bitNumber < 0 || bitNumber > 7)
            {
                throw new ArgumentOutOfRangeException();
            }
 
            BitArray array = new BitArray(new byte[] { value });
            return array[bitNumber];
        }
 
        public static bool ReadBitNative(this byte value, int bitNumber)
        {
            if (bitNumber < 0 || bitNumber > 7)
            {
                throw new ArgumentOutOfRangeException();
            }
 
 
            var bit = (value >> bitNumber) & 1;
            return Convert.ToBoolean(bit);
        }
    }
 
    class Program
    {
        static void Main(string[] args)
        {
            byte a = 0xE8;
            Console.WriteLine(Convert.ToString(a, 2));
            for (var i = 0; i < 8; ++i)
                Console.WriteLine(a.ReadBit(i));
 
            Console.WriteLine("-----------");
            for (var i = 0; i < 8; ++i)
                Console.WriteLine(a.ReadBitNative(i));
            Console.ReadLine();
        }
    }
}
1
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16115 / 11236 / 2887
Регистрация: 21.04.2018
Сообщений: 33,037
Записей в блоге: 2
06.08.2019, 03:26
amr-now, - BitArray array = new BitArray....; return array[bitNumber];..???
Это чтоб жизнь малиной не казалась?
2
 Аватар для Jman
89 / 77 / 38
Регистрация: 11.10.2015
Сообщений: 860
06.08.2019, 13:29  [ТС]
Цитата Сообщение от amr-now Посмотреть сообщение
спасибо за тему. Хоть тряхнуть седыми кудрями
Да, есть такое... Сам напутал с этими сдвигами. Хорошо этому учит программирование МК =)
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.08.2019, 13:29
Помогаю со студенческими работами здесь

Чтение из файла. Второй блок считывается не с нулевого байта, а с первого
Прошу перенести тему в нужный раздел, т.к. не знаю куда разместить. Есть задача прочитать данные с элементарного файла. Чтение происходит...

Чтение цвета бита на canvas
Добрый день! Перед выводом на канвас (WPF) графических объектов необходимо проанализировать цвет одного бита канваса по определенным...

Как перехватить координаты бита на картинке в момент обнаружения этого бита
есть картинка .Блокируем её в памяти.Пробегаемся по битам.Как перехватить координаты бита на картинке в момент обнаружения этого бита? ...

Операция "сброса бита в числе" (число и номер бита)
Как в калькуляторе сделать сброс бита в числе (число и номер бита)? В сети, нашел только это: #### value=(sbyte) value &amp;...

Как взять значение определенного бита из байта, и как организовать такое в цикле для каждого бита?
FASM моя первая задача - вычислить n-e число фибоначчи бинарное возведение в степень допустим у меня T= 10101010 b мне надо...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru