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

Двоичный код символа

06.08.2008, 02:03. Показов 37857. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
мне нужно из символа, после считывания из файла получить его двоичный код!!! подскажите плиз как это сделать!!!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.08.2008, 02:03
Ответы с готовыми решениями:

Как определить двоичный код символа.
Как определить двоичный код символа? Нашёл тему и исходный код программы, но мне нужно понять...

перевод десятичного вещественного в машинный код(двоичный код)
пожалуйста , подскажите пожалуйста код C++ ,для перевода вещественного числа в машиное (двоичное...

Двоичный код
Подскажите пожалуйста как возможно работать на С++ с двоичным кодом (b). И возможно ли это в вообще...

двоичный код
есть число в десятичной системе ( напр. 25 ) нужно перевести его в двоичную систему ( 11001 )...

15
Эксперт С++
2255 / 770 / 25
Регистрация: 27.05.2008
Сообщений: 1,496
06.08.2008, 05:41 2
Символ - это и есть его двоичный код.Фактически. То,что его показывают символом- интерпритация этого кода.
Если хочешь вывести его десятичное представление на экран - делай так.
C++
1
printf("%d",(int)c );
Добавлено через 9 минут
Если хочешь показать его в двоичном виде,то задача сводится к переводу из десятичной системы в двоичную. Можно так:
C++
1
2
3
4
5
int k = 128;//k= 10000000b
while(k>0) { //
    printf("%d", bool(c&k) ); // печатаем нужный разряд.
    k=k>>1;//сдвигаем k поразрядно вправо на 1.Что есть деление на 2
};
1
1 / 1 / 0
Регистрация: 06.08.2008
Сообщений: 55
06.08.2008, 05:41  [ТС] 3
там в с можно вбить только числа, а мне нужно символы и мне не нужно выводить нолики и единички на экран!!! мне они нужны для дальнейшей обработки!!! тоесть нужно забить последовательно в символьный массив!!!
0
Эксперт С++
2255 / 770 / 25
Регистрация: 27.05.2008
Сообщений: 1,496
06.08.2008, 05:48 4
В моем коде написано,как получить доступ к нужному разряду. Дальше хоть печатай,хоть обрабатывай...
0
1 / 1 / 0
Регистрация: 06.08.2008
Сообщений: 55
06.08.2008, 06:00  [ТС] 5
спасибки!!!
0
98 / 94 / 16
Регистрация: 16.05.2010
Сообщений: 310
16.05.2010, 23:47 6
а что в данной ситуации представляет переменная c?

Цитата Сообщение от XuTPbIu_MuHTAu Посмотреть сообщение
bool(c&k)
1
Эксперт С++
2255 / 770 / 25
Регистрация: 27.05.2008
Сообщений: 1,496
16.05.2010, 23:50 7
IchMors, то,что печатаем. Исходный символ
0
98 / 94 / 16
Регистрация: 16.05.2010
Сообщений: 310
17.05.2010, 00:00 8
ок)) спасибо, разобрался

только вывод имеет немного перевернутый вид (слева на право) и работает только при начальном значении "с=1".
0
Эксперт С++
2255 / 770 / 25
Регистрация: 27.05.2008
Сообщений: 1,496
17.05.2010, 00:09 9
Цитата Сообщение от IchMors Посмотреть сообщение
(слева на право)

Я всегда слева направо пишу. Привычка,так сказать..

Цитата Сообщение от IchMors Посмотреть сообщение
и работает только при начальном значении "с=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 <stdio.h>
 
 
 
void print_binary(char c) { 
    int k = 128;
 
    printf("%d ",(int)c);
 
 
    while(k>0) { //
 
        printf("%d", bool(c&k) ); // ïå÷àòàåì íóæíûé ðàçðÿä.
 
        k=k>>1;//ñäâèãàåì k ïîðàçðÿäíî âïðàâî íà 1.×òî åñòü äåëåíèå íà 2
 
    };
 
    printf("\n");
 
};
int main () { 
    
    for(char c = 0; c < 127;c++ ) 
        print_binary(c);
};
0
98 / 94 / 16
Регистрация: 16.05.2010
Сообщений: 310
17.05.2010, 00:23 10
что-то, честно говоря, я ума не приложу. Что ж тут правильного? Вы не заметили что истинное значение оно принимает только на наборе "1". Вот мой пример вашего выполнения:
Миниатюры
Двоичный код символа  
0
Эксперт С++
2255 / 770 / 25
Регистрация: 27.05.2008
Сообщений: 1,496
17.05.2010, 00:28 11
IchMors, младшие разряды справа,старшие - слева. Вы же не говорите, что 10 - это на самом деле единица, 100 - тоже единица,а вот 001 - сто?

Добавлено через 2 минуты
ладно,давайте поправим код,чтобы пропускал незначащие нули слева,чтобы было понятней

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
#include <stdio.h>
 
 
 
void print_binary(char c) { 
    int k = 128;
 
    printf("%d ",(int)c);
 
    while(!bool(c&k) && k ) 
        k>>=1;
 
    if(k==0) 
        printf("0");
    while(k>0) { //
 
        printf("%d", bool(c&k) ); // ïå÷àòàåì íóæíûé ðàçðÿä.
 
        k=k>>1;//ñäâèãàåì k ïîðàçðÿäíî âïðàâî íà 1.×òî åñòü äåëåíèå íà 2
 
    };
 
    printf("\n");
 
};
int main () { 
    
    for(char c = 0; c < 127;c++ ) 
        print_binary(c);
};
0
98 / 94 / 16
Регистрация: 16.05.2010
Сообщений: 310
17.05.2010, 00:48 12
IchMors, младшие разряды справа,старшие - слева. Вы же не говорите, что 10 - это на самом деле единица, 100 - тоже единица,а вот 001 - сто?
конечно же нет, но это называется с права на лево.

Вот теперь давайте проясним следующее: программа выводит на экран двоичное значение "с", а переменная "к" служит только для установления длины печатаемого числа? Если так, то меня просто смутила эта строчка:
int k = 128;//k= 10000000b
0
Эксперт С++
2255 / 770 / 25
Регистрация: 27.05.2008
Сообщений: 1,496
17.05.2010, 13:28 13
IchMors, не, k - это маска для побитовой операции "и". Там в комментах её двоичное представление,в цикле эта единичка смещается вправо по байту. Она не для установления длины,а для обработки каждого бита байта.
1
98 / 94 / 16
Регистрация: 16.05.2010
Сообщений: 310
08.06.2010, 03:52 14
Еще один вопрос пожалуйста)
в очень уж не нравится компилятору что в функцию bool() входят переменные int. Как с этим можно бороться?
При выполнении программа напрочь вылетает
Предупреждение: warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning)
Пример кода:
C++
1
2
3
4
5
    while(k>0) {
        text[count++]=int(bool(c&k));
        k=k>>1;
        count++;
    }
Добавлено через 44 секунды
XuTPbIu_MuHTAu, еще один вопрос пожалуйста)
в очень уж не нравится компилятору что в функцию bool() входят переменные int. Как с этим можно бороться?
При выполнении программа напрочь вылетает
Предупреждение: warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning)
Пример кода:
C++
1
2
3
4
5
    while(k>0) {
        text[count++]=int(bool(c&k));
        k=k>>1;
        count++;
    }
0
1 / 1 / 0
Регистрация: 13.05.2015
Сообщений: 10
Записей в блоге: 3
20.05.2015, 16:47 15
ДОБРЫЙ ДЕНЬ !!!
Я долго работал над созданием двух програм. И вот результат, две програмы 1)перестраевает цыфры десятичной системы в двоичную 2)перестраевает двоичную в десятичную.
1)
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var a : integer;
 
function DEC_BIN(x:longint):string;
const digits:array [0..1] of char = ('0','1');
var res:string; d:0..1;
begin
   res:='';
   while (x<>0) do begin
      d:=x mod 2; res:=digits[d]+res;
      x:=x div 2;
   end;
   DEC_BIN:=res;
end;
 
begin
  readln( a );
  writeln( DEC_BIN(a) );
end.
2)
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
var a : string;
 
function BIN_DEC(x:string):longint;
const digits:array [0..1] of char = ('0','1');
var res,ves:longint; i,j:byte;
begin
   res:=0; ves:=1;
   for i:=length(x) downto 1 do begin
      j:=0;
      while (digits[j]<>x[i]) do inc(j);
      res:=res+ves*j;
      ves:=ves*2;
   end;
   BIN_DEC:=res;
end;
 
begin
  readln( a );
  writeln( BIN_DEC(a) );
end.
Всем приятного програмирования
1
0 / 0 / 0
Регистрация: 28.05.2017
Сообщений: 1
28.05.2017, 02:55 16
ДОБРЫЙ ДЕНЬ !!!
Я долго работал над созданием двух програм. И вот результат, две програмы 1)перестраевает цыфры десятичной системы в двоичную 2)перестраевает двоичную в десятичную.
1)
PascalВыделить код
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var a : integer;

function DEC_BIN(x:longint):string;
const digits:array [0..1] of char = ('0','1');
var res:string; d:0..1;
begin
res:='';
while (x<>0) do begin
d:=x mod 2; res:=digits[d]+res;
x:=x div 2;
end;
DEC_BIN:=res;
end;

begin
readln( a );
writeln( DEC_BIN(a) );
end.
2)
PascalВыделить код
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
var a : string;

function BIN_DEC(x:string):longint;
const digits:array [0..1] of char = ('0','1');
var res,ves:longint; i,j:byte;
begin
res:=0; ves:=1;
for i:=length(x) downto 1 do begin
j:=0;
while (digits[j]<>x[i]) do inc(j);
res:=res+ves*j;
ves:=ves*2;
end;
BIN_DEC:=res;
end;

begin
readln( a );
writeln( BIN_DEC(a) );
end.
Всем приятного програмирования

SYPER GENIY ты дебил?
0
28.05.2017, 02:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.05.2017, 02:55
Помогаю со студенческими работами здесь

двоичный код
В общем задание такое: вводим число, присвоиваем переменной, на эту перемменную указатель, и нужно...

Преобразование в двоичный код С.
Задание следующее: Написать программу, которая получает случайное целое типа int,выводит...

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

Двоичный код Хоффмана
Помогите написать программу на С++ по заданному тексту задания(задание на фото)?


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

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

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