#include<stdio.h>
#include<stdlib.h>
void displayEightBits( unsigned int value );//prototype
int main(void){
unsigned int x;
printf( "%s", "Enter a nonnegative int: " );
scanf( "%u", &x );
displayEightBits( x );
}
void displayEightBits( unsigned int value )
{
unsigned int c;
unsigned int displayMask = 1 << 31;
printf( "%10u = ", value );
for ( c = 1; c <= 32; ++c ) {
putchar( value & displayMask ? '1' : '0' );
value <<= 1;
if (c % 8 == 0 ){
putchar( ' ' );
}
}
putchar( '\n' );
}
您好,此程序会提示用户输入非负数,然后返回输入数字的两个八位二进制表示形式。我想知道如何交换地点交换他们的地方。 (即将左侧字节向右移动,从右向左移动)。
如何交换无符号整数的两个八位二进制表示的位置?
答案 0 :(得分:0)
所以,如果我正确理解了这个问题,你就有了:
00000000 00001111 11110000 11111111
你希望:
11111111 11110000 00001111 00000000
你需要有四个for循环,其中一个循环从7到0,第二个循环从15到8,第三个循环从23到16,第四个循环从31到24。然后,如果循环变量是idx,则只需执行
putchar( value & (1<<idx) ? '1' : '0' );
然后就这样做
putchar(' ');
循环之间的以字节分隔空格。
我不会为您编写完整的代码,但根据这些说明,您应该可以制作一个有效的程序。
编辑:好的,如果我的答案不清楚,我会编写代码。我希望这段代码能让我的回答更清晰:
unsigned value = 0x12345678U;
int idx;
for (idx = 7; idx >= 0; idx--)
putchar(value & (1<<idx) ? '1' : '0');
putchar(' ');
for (idx = 15; idx >= 8; idx--)
putchar(value & (1<<idx) ? '1' : '0');
putchar(' ');
for (idx = 23; idx >= 16; idx--)
putchar(value & (1<<idx) ? '1' : '0');
putchar(' ');
for (idx = 31; idx >= 24; idx--)
putchar(value & (1<<idx) ? '1' : '0');
putchar('\n');
答案 1 :(得分:0)
您可以使用数组并将最后一个数字作为数组中的第一个数字