|
蓝森林 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楼的很简洁 |
| |