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

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

Войти
Регистрация
Восстановить пароль
 
StasyanKO
9 / 9 / 0
Регистрация: 13.04.2013
Сообщений: 63
#1

Первый бит числа - C++

15.01.2014, 20:37. Просмотров 848. Ответов 2
Метки нет (Все метки)

Пишу программу для сжатия файлов по алгоритму RLE. Чтобы программа понимала, что читаемое число отвечает за количество символов, я решил изменить старший бит этого числа с 0 на 1. Но как реализовать это я не знаю. Дано число. Нужно первый бит этого числа инвертировать с 0 на 1. А потом взять это же число и проверить, является ли старший бит 1. Если да, то вернуть обратно с 1 на 0. Как это реализовать? Заранее спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.01.2014, 20:37     Первый бит числа
Посмотрите здесь:

Как инвертировать первый бит у int? - C++
Что-то я совсем плохо соображаю. Напомните, пожалуйста, как инвертировать первый бит у int? Что бы если б там был ноль, то стал 1 и...

Биты (поменять нулевой и первый бит, второй и третий и т.д.) - C++
Нужно поменять нулевой и первый бит, второй и третий и т.д. Тип числа - unsigned int. Хотя б алгоритм.

Удалить из каждого байта строки первый (старший) бит. - C++
Здравствуйте. Суть задачи в общем-то и отображена в названии задачи. Есть строка: unsigned char str; Необходимо в каждом...

Получить бит числа - C++
Необходимо получить значение бита числа double. Такой код: bool getBit(double * d, int bit){ unsigned mask=1<<bit; bool res; ...

как проверить восьмой бит числа - C++
как проверить восьмой бит числа на 0 либо 1 не зная остальные биты? И можно ли вообще?

Обратить каждый второй бит числа. - C++
Дано число в шестнадцатеричной системе исчисления 12ВF вывести его в "битовой форме" (011011001) потом обратить каждый второй бит и...

Вывести 6 бит целого числа А, начиная со 2-ого - C++
Никак не могу вникнуть в суть этих побитовых операций. Здесь, по идее, нужно указать некую маску(прошу объяснить, как его кушают, я,...

Установить в единицу каждый второй бит заданного целого числа - C++
Доброго времени суток . Такая вот задача : установить в единицу каждый второй бит целого числа А. Догадываюсь что нужно делать через...

Что означает длина простого числа 256 или 1024 бит? - C++
Привет, товарищи! Вообщем вопрос такой. Хочу реализовать подпись ГОСТ Р34.10-94. В условии написано: Нужно рандомно взять 2 числа: q...

переход с 32 бит на 64 бит - C++
Здравствуйте. Пробую на builder 10 перевести проект с 32 на 64 бит. Возникают странные ошибки: template <typename T> class DOT { ...

Найти первый член последовательности по модулю меньший заданного числа - C++
Дано действительное число 3 > x > 1. Последовательность a1, a2, … an образована по закону ...

Получить первый элемент последовательности х,х квадрате,х в кубе,...больший числа. - C++
1.Пусть даны числа x и y(x>1).Получить первый элемент последовательности х,х квадрате,х в кубе,...больший числа. 2.Проверить...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
15.01.2014, 20:45     Первый бит числа #2
StasyanKO, писал на шарпе раньше. Надо?

Добавлено через 3 минуты
Вот, если что...
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
public void Compress(string sourcePath, string resultPath)
        {
            FileStream source = new FileStream(sourcePath, FileMode.Open, FileAccess.Read);
            FileStream result = new FileStream(resultPath, FileMode.Create, FileAccess.Write);
 
            try
            {
                int check;
                long count = 1;
                byte prev = (byte)source.ReadByte();
 
                while ((check = source.ReadByte()) != -1)
                {
                    byte curr = (byte)check;
 
                    if (curr == prev)
                        count++;
                    else
                    {
                        for (int i = 0; i < 8; i++)
                        {
                            result.WriteByte((byte)(count >> ((7 - i) * 8)));
                        }
                        result.WriteByte(prev);
                        count = 1;
                        prev = curr;
                    }
                }
 
                for (int i = 0; i < 8; i++)
                {
                    result.WriteByte((byte)(count >> ((7 - i) * 8)));
                }
                result.WriteByte(prev);
            }
            finally
            {
                source.Close();
                result.Close();
            }
        }
StasyanKO
9 / 9 / 0
Регистрация: 13.04.2013
Сообщений: 63
15.01.2014, 20:45  [ТС]     Первый бит числа #3
я попробую разобраться))
Ответ Создать тему
Опции темы

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