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

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

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

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

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

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

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

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

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

Закодировать файл. Взять 7 байт. Первый бит каждого байта переместить в 8 байт - C++
Нужно открыть бинарный файл и закодировать следующим образом. Взять 7 байт. Первый бит каждого байта переместить в 8 байт. То есть,...

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
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();
            }
        }
1
StasyanKO
9 / 9 / 0
Регистрация: 13.04.2013
Сообщений: 63
15.01.2014, 20:45  [ТС] #3
я попробую разобраться))
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.01.2014, 20:45
Привет! Вот еще темы с ответами:

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

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

Бит 8, младший и старший бит (по книге) - C++
Добрый день. Вот читаю книгу, и не пойму элементарной на первый взгляд вещи. Как понять следующие предложения: 1) Если бит...

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


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

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

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