首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

输入负数印出该负数的二进位解决办法

2013-01-07 
输入负数印出该负数的二进位Complete the source file below to get the correct result.运行:input a int

输入负数印出该负数的二进位



Complete the source file below to get the correct result.

运行:
input a integer (0~255) : 100
100's binary : 01100100
input a integer (int) (-2^31~2^31-1) : -100
-100's binary : 11111111111111111111111110011100


框架:
#include <stdio.h>
int c2b(unsigned char);
void printi(int);
int main ( void)
{
    unsigned char a;
    int x;
    do
    {
        printf("input a integer (0~255) : ");
        scanf("%u",&x);
    }
    while ((x > 255 || x < 0));
    a = x;
    printf("%d's binary : %08d",a,c2b(a) );
    printf("\n");

    printf("input a integer (int) (-2^31~2^31-1) : ");
    scanf("%d",&x);
    printi(x);
printf("\n");

    return 0;
}

int c2b( unsigned char c )
{
    // your code
}

void printi (int x)
{
    // your code
}
[解决办法]


#include <stdio.h>
int c2b(unsigned char);
void printi(int);
int main ( void)
{
    unsigned char a;
    int x;
    do
    {
        printf("input a integer (0~255) : ");
        scanf("%u",&x);
    }
    while ((x > 255 
[解决办法]
 x < 0));
    a = x;
    printf("%d's binary : %08d",a,c2b(a) );
    printf("\n");

    printf("input a integer (int) (-2^31~2^31-1) : ");
    scanf("%d",&x);
    printi(x);
printf("\n");

    return 0;
}

int c2b( unsigned char c )
{
    int i, b;

    b = 0;
    for (i = 0; i < 8; ++i)
        b = 10 * b + ((c >> (7 - i)) & 1U);
    return b;
}

void printi (int x)
{
    int i;
    printf("%d's binary :", x);
    for (i = 0; i < 32; ++i)


        if ((((unsigned int)x) >> (31 - i)) & 1U)
            printf("1");
        else
            printf("0");
}

热点排行