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

Изменить программу для типа unsigned char - C++

Восстановить пароль Регистрация
 
marina11
1 / 1 / 0
Регистрация: 15.11.2012
Сообщений: 84
20.02.2013, 14:40     Изменить программу для типа unsigned char #1
Подскажите пожалуйста, что нужно изменить в программе перевода числа, чтобы она правильно работала для введенного числа типа unsigned char,а не int. Когда меняю типы, программа выдаёт один и тот же неправильный результат для любого введенного числа...
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
#include "stdafx.h"
#include <stdio.h>   
#include <conio.h>   
#include <math.h>   
  
void dvoich(int x)   
{  
    int i, b;  
    long c = 0;  
     for(i=0; x > 0;i++)  
     {
        b = x % 2;  
        x = (x-b)/2;
        c += b * pow(10.,i);
    }
    printf("\nDvoichnoe chislo: %d",c);   
 
}   
  
void main()   
{
    int a;  
    printf("Vvedite desyatichnoe chislo:");  
    scanf("%d",&a);  
     dvoich(a);  
    getch();  
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
20.02.2013, 15:47     Изменить программу для типа unsigned char #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void dvoich(unsigned char x)   
{  
int mask = 128; // 1000 0000
int bit;
for(int i=0; i<8;i++)
bit = x&mask;
if(bit)
bit = 1;
mask/=2;
printf("%i",bit);
}
printf("\n");
}
marina11
1 / 1 / 0
Регистрация: 15.11.2012
Сообщений: 84
20.02.2013, 16:57  [ТС]     Изменить программу для типа unsigned char #3
Цитата Сообщение от aLarman Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void dvoich(unsigned char x)   
{  
int mask = 128; // 1000 0000
int bit;
for(int i=0; i<8;i++)
bit = x&mask;
if(bit)
bit = 1;
mask/=2;
printf("%i",bit);
}
printf("\n");
}
Не работает..а почему int mask присваивается именно 128?
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
20.02.2013, 17:04     Изменить программу для типа unsigned char #4
ну в двоичном представлении 128 == 1000 0000 (как написано выше) чтобы выделить 1ый бит чара)
потом делим маску пополам и потом она будет 64 что == 0100 0000 чтобы взять следущий бит)

Добавлено через 4 минуты
а еще я скобку пропустил
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void dvoich(unsigned char x)   
{  
int mask = 128; // 1000 0000
int bit;
for(int i=0; i<8;i++) {
bit = x&mask;
if(bit)
bit = 1;
mask/=2;
printf("%i",bit);
}
printf("\n");
}
у меня работает на символ 'a' вывел 0110 0001 (=97)
marina11
1 / 1 / 0
Регистрация: 15.11.2012
Сообщений: 84
20.02.2013, 17:43  [ТС]     Изменить программу для типа unsigned char #5
Цитата Сообщение от aLarman Посмотреть сообщение
ну в двоичном представлении 128 == 1000 0000 (как написано выше) чтобы выделить 1ый бит чара)
потом делим маску пополам и потом она будет 64 что == 0100 0000 чтобы взять следущий бит)

Добавлено через 4 минуты
а еще я скобку пропустил
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void dvoich(unsigned char x)   
{  
int mask = 128; // 1000 0000
int bit;
for(int i=0; i<8;i++) {
bit = x&mask;
if(bit)
bit = 1;
mask/=2;
printf("%i",bit);
}
printf("\n");
}
у меня работает на символ 'a' вывел 0110 0001 (=97)
Спасибо большое,очистила решение и всё заработало)
Yandex
Объявления
20.02.2013, 17:43     Изменить программу для типа unsigned char
Ответ Создать тему
Опции темы

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