Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/64: Рейтинг темы: голосов - 64, средняя оценка - 4.88
1 / 1 / 0
Регистрация: 11.09.2020
Сообщений: 71
1

Как узнать значение бита в числе?

13.09.2020, 21:43. Показов 11565. Ответов 6

Author24 — интернет-сервис помощи студентам
Здравствуйте. Помогите решить задачу. Даже не знаю с чего начать.

Запросить с консоли целое число и проверить значение бита с указанным номером в этом
числе. Результат такой проверки вывести на консоль. Для удобства разрешается
запрашивать указанное число в восьмиричной или шестнадцатиричой системе счисления.
При выполнении задания важно обратить внимание на грамотный выбор типа данных
анализируемого числа.

номер бита 16
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.09.2020, 21:43
Ответы с готовыми решениями:

Как узнать значение определенного бита двоичного числа
Как узнать значение определенного бита двоичного числа? Например, имеется число a = 0b1101101...

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

Узнать значение n-го бита в регистре
Доброго времени суток! Суть задачи в следующем: необходимо из регистра вытащить поочередно все биты...

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

6
2487 / 1145 / 707
Регистрация: 25.04.2016
Сообщений: 3,291
14.09.2020, 02:25 2
C
1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
 
int main (void) {
    int num, bit;
    printf("num bit :> ");
    if (scanf("%d%d", &num, &bit) != 2 || bit < 0)
        return 1;
 
    printf("bit: %d\n", num & (1 << bit));
    return 0;
}
0
Злостный нарушитель
9547 / 5176 / 1182
Регистрация: 12.03.2015
Сообщений: 24,445
14.09.2020, 02:27 3
C++
1
2
3
4
5
6
7
8
// проверить значение бита с указанным номером в числе
inline bool bit_state(const int64_t x, const unsigned bit_index)
{
  return x & (1 << bit_index);
}
 
// макрос
#define BIT(x, idx) ((x) & (1 << (idx)))
0
2487 / 1145 / 707
Регистрация: 25.04.2016
Сообщений: 3,291
14.09.2020, 02:30 4
если хочется наглядности:
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
#include <stdio.h>
#include <stdlib.h>
static const int S = sizeof(int) * 8 - 1;
 
void binari (int n) {
    printf("\nnum: ");
    for (int i=S; i>=0; --i) {
        printf("%d", n & (1 << i));
        if (i%4 == 0) printf(" ");
    }
    printf("\n");
}
 
int get_value (const char *str) {
    int number;
    printf("%s ", str);
    if (scanf("%d", &number) != 1 || number < 0)
        exit(1);
    return number;
}
 
int main (void) {
    int num = get_value("num >>");
    int bit = get_value("bit >>");
 
    binari(num);
    printf("bit: %d\n", num & (1 << bit));
    return 0;
}
нумерация бит справа с 0
0
Злостный нарушитель
9547 / 5176 / 1182
Регистрация: 12.03.2015
Сообщений: 24,445
14.09.2020, 03:44 5
C++
1
2
3
4
5
6
// как тебе такое, илон маск?
inline bool bit_state(void* x, size_t size, const unsigned bit_index)
{
  uint8_t* byte_ptr = (uint8_t*)x;
  return !!(byte_ptr[bit_index / 8] & (1 << (bit_index % 8)));
}
0
Вездепух
Эксперт CЭксперт С++
12784 / 6662 / 1794
Регистрация: 18.10.2014
Сообщений: 16,854
14.09.2020, 05:20 6
Цитата Сообщение от ddddw Посмотреть сообщение
Для удобства разрешается
запрашивать указанное число в восьмиричной или шестнадцатиричой системе счисления.
В стандартной библиотеке С это достигается путем использования формата %i в функции scanf, если авторы задачи имели в виду именно это. Почему-то до сих пор никто не обратил на это внимания...
1
2487 / 1145 / 707
Регистрация: 25.04.2016
Сообщений: 3,291
16.09.2020, 11:38 7
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Почему-то
А зачем? И так отлично работает.
0
16.09.2020, 11:38
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.09.2020, 11:38
Помогаю со студенческими работами здесь

Чтение и изменение бита в числе
Доброго времени суток! Столкнулся с такой проблемой - через СOM порт от контроллера получаю массив...

Установка бита в двоичном числе
Добрый день! Столкнулся с проблемой при установке бита в двоичном числе. использую функцию bts,...

Инвертировать 2 средних бита в числе
люди помогите пожалуйста с заданием. Часть кода имеется, составил число, вот только с...

Инвертирование определенного бита в заданном числе
Напишите программу, которая инвертирует определенный бит в заданном числе (биты при этом нумеруются...

Побитовыми операциями поменять местами в числе по 2 бита
Задали побитовыми операциями поменять местами в числе по 2 бита то есть в веденном числе последние...

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


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

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