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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.86
%binary%
 Аватар для %binary%
52 / 11 / 1
Регистрация: 04.02.2011
Сообщений: 126
#1

Как определить двоичный код символа. - C++

04.06.2011, 22:53. Просмотров 2579. Ответов 3
Метки нет (Все метки)

Как определить двоичный код символа? Нашёл тему и исходный код программы, но мне нужно понять алгоритм работы, т.к. я начинающий, то кое чего не догоняю, кто может с комментариями объяснить?
Преобразование текст -> двоичный код -> текст
И что за "stdafx.h"? Я так понял, что это заголовочный файл, но в стандартных библиотеках его нет, и компилятор на него ругается, а без него всё работает.0_o
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.06.2011, 22:53     Как определить двоичный код символа.
Посмотрите здесь:

C++ Двоичный код символа
C++ Как вывести код символа?
двоичный код C++
Как определить код символа ? C++
C++ как исправить ошибку? (программа должна перевести двоичный код в десятичный)
перевод десятичного вещественного в машинный код(двоичный код) C++
Определить двоичный код заданной десятичной цифры. C++
Что означает двоичный поиск?Как определить позицию, где в этот массив можно вставить число x C++
C++ Как получить код символа unicode в std::wstring?
C++ Как узнать двоичный код файла?
C++ Как получить бинарный код символа?
Вывод символа char, как код (как число) C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
diagon
Higher
 Аватар для diagon
1921 / 1187 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
05.06.2011, 07:43     Как определить двоичный код символа. #2
stdafx.h-заголовочный файл MS Visual Studio, остальным компиляторам не нужен
Почитайте по алгоритм перевода числа из десятичной в двоичную систему. Если вкратце-пока число больше или равно основанию системы(2 в данном случае), делим его на 2, и запоминаем остатки от деления. Затем берем оставшуюся цифру и собираем остатки с конца, получится двоичное число.
Моя реализация:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
char * bin(int n){
    const int size=100; //максимальная длина числа
    int * b=new int[size],i=0,j; //объявляем переменные и заодно выделяем память под массив b
    for (;n>1;n/=2) //пока число больше 1 
        b[i++]=n%2; //заносим в массив остатки от деления это числа на 2, и делим само число
    b[i++]=n;//заносим в конец массива оставшуюся цифру(впрочем, в двоичной системе она всегда будет равна 1)
    char s[size];
    for (j=0;i;)
        s[j++]=b[--i]+48;  //заносим в строку перевернутый массив
    s[j]=0; //ставим символ конца строки
    delete[] b;  //освобождаем память
    return s; 
}       
int main(){
    int a;
    std::cout << "dec: ";
    std::cin >> a;
    std::cout << "binary: " << bin(a) << std::endl;
    return 0;
}
dihlofos
Бродяга
 Аватар для dihlofos
303 / 257 / 17
Регистрация: 27.08.2010
Сообщений: 553
05.06.2011, 08:41     Как определить двоичный код символа. #3
Цитата Сообщение от %binary% Посмотреть сообщение
Как определить двоичный код символа?
Если символа (т.е. char, занимающего 1 байт), то как я понимаю, можно работать на битовом уровне? Вот как я бы сделал (без претензии на правильность или идеальность кода))):

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
#include <iostream>
 
int charToBinary(unsigned char val)
{
    int binary = 0;
    
    for (int i = 7; i >= 0; --i)
    {
        binary *= 10;
        
        if (val & (1 << i))
            binary += 1;
    }
    
    return binary;
}       
    
int main()
{
    unsigned char a;
    std::cout << "enter symbol: ";
    std::cin >> a;
    std::cout << "binary: " << charToBinary(a) << '\n';
    
    return 0;
}
С поразрядными операциями у меня пока туговато, но я могу объяснить работу функции так:

1 << i - побитовый сдвиг 1 на i позиций, например: 1 << 0 = 00000001; 1 << 1 = 00000010; 1 << 2 = 00000100 итд

& - поразраядная конъюнкция - в результат заносится 1, когда оба сравниваемых бита == 1, иначе - 0, например: 11101101 & 01000001 = 01000001 (true), a 10101101 & 01000010 = 00000000 (false)

Таким образом просматриваем каждый бит val на равество его 1, и в случае успеха добавляем 1 в результат.

Если я в чём-то ошибся или что-то усложнил, буду рад совету знающих людей))
%binary%
 Аватар для %binary%
52 / 11 / 1
Регистрация: 04.02.2011
Сообщений: 126
05.06.2011, 11:10  [ТС]     Как определить двоичный код символа. #4
Спасибо всем за объяснения, просто заниматься стал этим совсем недавно, где-то три месяца, а информатика в школе первый год, но интерес к компьютеру и программированию огромный)
Yandex
Объявления
05.06.2011, 11:10     Как определить двоичный код символа.
Ответ Создать тему
Опции темы

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