Вывод двоичного представления дсятичного числа. - C (СИ)

Формулировка задачи:

Вот код.
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
 
 
/*  Функция для вывода значений битов, представляющих
    заданное целое число в памяти компьютера.
*/
void ShowInBin(int x)
{
    int     i, j, num_bits_in_int, num_bits;
    char *  Arr;
 
    /*  Количество битов, необходимое
            для представления числа x.  */
    num_bits = (int)(log((double)x) / log(2.0)) + 1;
 
    /*  Количество битов, необходимое
        для представления максимального
                        целого числа.   */
    j = num_bits_in_int = sizeof(int) * 8;
 
    Arr = (char *) malloc(sizeof(char) * num_bits_in_int);
 
    /*  Обнуляем необходимое количество битов слева.    */
    for (i = 0; i < num_bits_in_int - num_bits; ++i)
        Arr[i] = '0';
 
    while (j > i)
    {
        Arr[--j] = x % 2 + '0';
        x /= 2;
    }
 
    for (i = 0; i < num_bits_in_int; ++i)
        printf("%c", Arr[i]);
 
    free(Arr);
}
 
int main()
{
    int x;
    x = 8;
    ShowInBin(x);
    return 0;
}
почему-то в Codeblocks и Dev-C++ выводит все нули, а в Visual Studio выводит нормально.

Код к задаче: «Вывод двоичного представления дсятичного числа. - C (СИ)»

textual
printf("%d", (num >> i)&1);

12   голосов, оценка 4.000 из 5


СОХРАНИТЬ ССЫЛКУ