Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > C++ Borl 3.1


Автор: Знак 27.5.2005, 16:51
Подскажите как граматно..

Перевести в (C++ Borland 3.1)
числа из DEC или HEX в BIN
искал в описалове ничего нет... -(

Еще интересует как поделить число HEX на
старший и младший bit
по типу ассемблерной AX == AH + AL
пробывал в C++ 3.1 через

asm {
mov ax, ЛЯЛЯЛЯ
mov ДУДУДУ , al
}

А че дальше писать не знаю в описалове пусто..no exempls in there..-))
Если кто в курсе как в asm{} сделать ссылку на запись числа в РЕГ АХ
и вернуть результат... подскжте плз... на ретурн у меня невыпрыгивает.



Автор: jorkug 28.5.2005, 03:12
sprintf/printf в принципе это может:
Код

int a = 50;
printf("%d  %x  %o", a,a,a)
//    |    |     |
//decimal hex octal

Автор: Знак 28.5.2005, 14:38
Чёйто не понятно..

printf();;

это старая конструкция для out stream

%x %h %o; Это не двоичные системы -)

А мне надо двоичную

Ну да ладнось я ужо нарыл кое что...
может напишу попойзже... _0) smile

Автор: Yanis 28.5.2005, 16:34
Цитата
Чёйто не понятно..

printf();;

это старая конструкция для out stream

%x %h %o; Это не двоичные системы -)

А мне надо двоичную

Ну да ладнось я ужо нарыл кое что...
может напишу попойзже... _0) smile

printf в данном случае распечатает число 50 в десятичной (decimal), шестнадцатиричной (hex) и восьмиричной (octal) СС. Но не в двоичной.
Добавлено @ 16:43
Посмотри здесь - http://forum.xakep.ru/forum.asp?forumID=84. Я когда то там приводил пример для перевода из десятичной СС в двоичную СС.

Автор: Yanis 28.5.2005, 16:52
Вот нашел: http://forum.xakep.ru/view.asp?topicID=50423.

Автор: Знак 1.6.2005, 20:19
Aga Шас посмотрю и попробую спасибки! smile

Автор: versus 1.6.2005, 21:13
функция печатает двоичное представления числа number в строку binary_string.
binary_string должна быть достаточно большой для удержания двоичного представления числа

Код

#define BITS_PER_BYTE 8

char* get_binary(unsigned int number, char* binary_string)
{
/*    unsigned int mask1 = 0x8000; /* 1000000000000000 -- 32 bit specific!!! */
    unsigned int mask = 0x1;
    mask <<= (sizeof(number) * BITS_PER_BYTE) - 1;

    int pos = 0;

    while (mask)
    {
    if (mask & number)
        binary_string[pos++] = '1';
    else
        binary_string[pos++] = '0';

    mask >>= 1;
    }

    return binary_string;
}


Позвать можно например так
Код

int main(int argc, char* argv[])
{
   const size_t length = sizeof(number) * BITS_PER_BYTE + 1;
   char binary_string[length];
   unsigned int number;

   assert(argc > 1);

   number = (unsigned int)atoi(argv[1]));
   printf("Двоичное представление числа %u:\n", number);
   get_binary(number, binary_string);
   printf("%s\n", binary_string);
   
   return 0;
}


Однако на практике строка для двоичного представления числа используется редко. Проще написать простые функции типа get_bit_at(unsigned int number, unsigned int pos), set_bit_at(unsigned int number, unsinged int pos);

Автор: Знак 2.6.2005, 10:13
Спасибки еще раз посмотрю и твой пример Версус...

вообще мне нужно это для того чтобы из файла считывать по 4 bita
т.е. Байт на верхний и нежний рег поделить надо и выводить их в массив по одному!! во как..... smile
если есть готовая прога у кого плиз пожжж. помогите ... smile

а то картинку не вывести!! smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)