Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.82
xDariuSx
10 / 10 / 1
Регистрация: 20.11.2012
Сообщений: 24
#1

Проверка бита - C++

08.09.2013, 23:53. Просмотров 3261. Ответов 3
Метки нет (Все метки)

Всем привет. Хотел спросить знающих людей, как можно проверить бит в байте. То есть, допустим, есть unsigned char "01010101". Какими быстрыми способами можно проверить второй бит, 1 там или 0, не используя конструкцию
C++
1
2
3
4
5
unsigned char a = 0x55;
if(((unsigned char)(a << 5)) >> 7 != 0)
{
/*any code*/
}
То есть смысл - проверить байт флаги без особых нагромождений.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.09.2013, 23:53
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Проверка бита (C++):

Проверка бита на единицу - C++
Подскажите, корректно ли такое сравнение if((paramData &amp;= 0x80) == 1) // проверка на наличие единицы(1) в 8-ом бите данного байта длины...

Создать 2 переменные, одна из которых хранит 2 старших бита исходного числа, другая 2 младших бита этого числа - C++
Дано число. Создать 2 переменные, одна из которых хранит 2 старших бита исходного числа, другая 2 младших бита этого числа. код частично...

Извлечь 3 бита числа A, начиная со второго и вставить их в число B, начиная с первого бита - C++
Ввести целое A. Извлечь 3 бита числа A, начиная со второго и вставить их в число B, начиная с ервогоп бита. B=1A05h.

Обработка бита - C++
Название Размерность Тип N 16 вход M 4 вх P ...

Обработка бита - C++
На входе даны два 8-х разарядных числа IN_0, IN_1. Если на пятом месте в IN_0 стоит 0, то поменять знак числа IN_1,(и вывести...

Установка бита - C++
Дано целое число A и целое число k. Выведите число, которое получается из числа A установкой значения k-го бита равному 1.

3
Слепой Уфолог
3 / 3 / 0
Регистрация: 04.09.2013
Сообщений: 18
09.09.2013, 00:11 #2
У первой переменной (random_num) третий бит ноль, у второй переменной единица.

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <cstdio>
#include <stdint.h>
 
int main() {
    int random_num = 23252323;
    const uint32_t kThirdBit = 4; //4 равно 001 в бинарном виде
    
    if (random_num & kThirdBit) {
        printf("third bit set\n");
    } else {
        printf("third bit not set\n");
    }
    
    random_num = 23252327;
    if (random_num & kThirdBit) {
        printf("third bit set\n");
    } else {
        printf("third bit not set\n");
    }
    
    return 0;
}
Выдает:
~$ g++ test.cpp -o test
~$ ./test
third bit not set
third bit set
PS:
Ну а чтобы установить третий бит:
random_num |= kThirdBit;

чтобы удалить:
random_num &= ~kThirdBit;
1
Olivеr
412 / 408 / 13
Регистрация: 06.10.2011
Сообщений: 831
09.09.2013, 00:39 #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <cstdint>
#include <type_traits>
 
template <class Arithmetic>
bool test(Arithmetic n, Arithmetic pos)
{
    static_assert(std::is_unsigned<Arithmetic>::value, "");
    return (Arithmetic(1) << pos) & n;
}
 
int main()
{
    std::cout << test<uint8_t>(85, 1);
    return 0;
}
1
Байт
Эксперт C
16144 / 10422 / 1552
Регистрация: 24.12.2010
Сообщений: 19,730
09.09.2013, 10:26 #4
Конкретно 2-й
C++
1
if(a&2)...
3-й
C++
1
if (a&4)...
k-й
C++
1
if(A&(1<<(k-1)))...
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.09.2013, 10:26
Привет! Вот еще темы с ответами:

Копирование бита - C++
Надо упростить и оптимизировать строку *p=((*p&amp;0x80)&gt;&gt;8)|(*p&amp;0x80);. Задача - скопировать (не переместить) старший бит байта в младший бит...

Замена бита единицей - C++
Здравствуйте, помогите пожалуйста решить задачку. Нужно: ввести последовательность из 8 целых чисел. В каждом втором числе заменить (...

Как проверить 2 бита? - C++
BorlandC++3.0 MS-DOS, надо проверить 5й бит равен 1, а 6й бит = 0, не получается их проверить в одном IF, если проверяю по отдельности, то...

Замена бита единицей - C++
Как реализовать данное условие? Ввести последовательность из 8 целых чисел. В каждом втором числе заменить ( i-1)-й бит единицей, где...


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

Или воспользуйтесь поиском по форуму:
4
Yandex
Объявления
09.09.2013, 10:26
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru