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

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

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

C++ Получить бит числа
C++ Обратить каждый второй бит числа.
C++ Удалить из каждого байта строки первый (старший) бит.
Как инвертировать первый бит у int? C++
C++ Биты (поменять нулевой и первый бит, второй и третий и т.д.)
C++ Что означает длина простого числа 256 или 1024 бит?
C++ Закодировать файл. Взять 7 байт. Первый бит каждого байта переместить в 8 байт
C++ Найти первый член последовательности по модулю меньший заданного числа

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
go
Эксперт C++
3582 / 1362 / 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
я попробую разобраться))
Yandex
Объявления
15.01.2014, 20:45     Первый бит числа
Ответ Создать тему
Опции темы

Текущее время: 11:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru