1 / 1 / 0
Регистрация: 10.12.2017
Сообщений: 48
1

Обнуление старшего ненулевого бита числа

14.02.2019, 09:53. Показов 4097. Ответов 2
Метки нет (Все метки)

Добрый день, необходимо обнулить старший ненулевой бит числа, я вроде бы делаю все правильно, но код работает только для чисел не превосходящих 2^32-1. Мне же необходимо работать с числами до от 1 до 10^12. Почему мой код работает только для чисел из диапазона uint32_t ? Буду благодарен за помощь
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
.
#include <iostream>
#include <math.h>
#include <bitset>
using namespace std;
 
int main()
{
    uint64_t num = 1000000000000;
    std::cout << std::bitset < sizeof(num) * CHAR_BIT > (num) << "\n";
    int index = log2(num); // индекс старшей 1 числа
    num = (num & (~(1 << index))); // обнуление старшей 1
    std::cout << std::bitset < sizeof(num) * CHAR_BIT > (num) << "\n";
    return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.02.2019, 09:53
Ответы с готовыми решениями:

Функция, которая для заданного числа рассчитывает позицию первого слева (старшего) нулевого бита числа
Написать функцию, которая для заданного числа х рассчитывает позицию первого слева (старшего)...

Определите четность числа по анализу старшего бита, используя объединение с битовыми полями
Используя объединение с битовыми полями, определите четность беззнакового целого числа по анализу...

Позиция старшего значащего бита
Нет ли в стандартной библиотеке готовой функции находящей позицию старшего единичного бита числа?...

Сканирование с младшого до старшего бита на наличие 1
Привет всем. Нужна помощь. Есть задание: Задано число А. Мне нужно сделать сканирование с младшого...

2
315 / 211 / 101
Регистрация: 12.02.2019
Сообщений: 896
14.02.2019, 10:01 2
Лучший ответ Сообщение было отмечено smurf19458 как решение

Решение

может так?
C++
1
num = (num & (~((uint64_t)1 << index)));
1
1 / 1 / 0
Регистрация: 10.12.2017
Сообщений: 48
14.02.2019, 10:04  [ТС] 3
Спасибо огромное
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.02.2019, 10:04
Помогаю со студенческими работами здесь

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

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

Определить значение старшего бита в четверном слове
Имеется какое-либо четверное слово: X64X63X62X61X60X59X58X57 X56X55X54X53X52X51X50X49...

В двоичном представлении инвертировать все одиночные единицы, кроме старшего бита
В двоичном представлении инвертировать все одиночные единицы, кроме старшего бита.


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru