2、8、10、16进制输出

#include <stdio.h>
#include <stdlib.h>
typedef short type;  //进行二进制转换的数据类型

/********************************************************************************
*  Description:本函数实现 将type类型的数据以二进制形式输出
*   Input Args:待输出的原始数据
* Return Value:void
********************************************************************************/
void binary_output(type a)
{
    int i;
    type b;
    char *ptr = (char *)malloc(8*sizeof(a));
    ptr += 8*sizeof(a); //将指针指向分配的空间的末尾,便于下面的赋值
    for(i=8*sizeof(a)-1;i>0;i--) //循环次数减一,否则ptr最后就多减了,从而指向的不是分配的首地址了
    {
        b = a&1;
        *ptr-- = b+'0'; //试过不用间接数据b,但是会出错
        a >>= 1;
    }

    b = a&1;
    *ptr = b+'0';

    printf("二进制:%s ",ptr);

     free(ptr);
}

int main (int argc, char **argv)
{
    type a = 12;
    printf("十进制:%d ",a);
    printf("八进制:%o ",a);
    printf("十六进制:%0x ",a);
    binary_output(a);
    printf("地址形式:%#x ",a);
    printf("地址形式:%p ",a);
    return 0;
}

输出

十进制:12
八进制:14
十六进制:c
二进制:0000000000001100
地址形式:0xc
地址形式:0xc

原文地址:https://www.cnblogs.com/zhanbiqiang/p/4109349.html