蓝森林首页 | 返回主页 | 本站地图 | 站内搜索 | 联系信箱 |
 您目前的位置:首页 > 自由软件 > 技术交流 > 应用编程


    

蓝森林 http://www.lslnet.com 2006年6月6日 10:18


[求助] C 语言 位运算 问题

接受用户输入一个数, 用二进制输出该数,然后再反序输出该数。
比如用户输入 2,
正序输出: 00000000 00000000 00000000 00000010 (已经实现)
反序输出: 01000000 00000000 00000000 00000000 (不会做,求助)


代码如下:


#include <stdio.h>

/*function prototypes*/
void displayBits(unsigned value);
void displayBitsR(unsigned value);

int main()
{
        /* declare and initialise variables */
        unsigned num = 0;
       
        printf("Input a number: ");
        scanf("%u",&num);

        displayBits(num); // 正序输出
        printf("\n\n");

        displayBitsR(num); // 反序输出;各位帮帮忙
        printf("\n\n");

        /* return  value */
        return 0;
}/* end main function */

void displayBits(unsigned value)
{
        /*declare local variables*/
        unsigned c;
        unsigned displayMask = 1 << 31;

        printf("%10u = ", value);
        for(c = 1; c <= 32; c++)
        {
                putchar(value & displayMask ? '1': '0');
                value <<= 1;

                if(c % 8 == 0)
                        putchar(' ');
        }

}

/****************************************************************/

void displayBitsR(unsigned value)
{
     /******????????******/

}

在线等待好心人。

如下:

void displayBitsR(unsigned value)
{
         int i = 0;
         for (; i < =31; i++)
                printf("%c",  (value & (1<<i)) ? '1' : '0');
        
         printf("\n");
}

用个for循环,求个移位值,目的数用个倒序for不久行了

-->

多谢了。:)

-->

明白了,多谢了:)

3楼的很简洁



Copyright © 1999-2000 LSLNET.COM. All rights reserved. 蓝森林网站 版权所有。 E-mail : webmaster@lslnet.com