如何交换无符号整数的两个八位二进制表示形式的位置? #包括 #包括 void displayEightBits(无符号整数值)//原型 内部主(空){ 无符号整数x; printf(“%s”,“输入非负整数:”); scanf(“%u”、&x); 显示八位(x); } void displayEightBits(无符号整数值) { 无符号整数c; unsigned int displayMask=1
因此,如果我正确理解了这个问题,您已经:如何交换无符号整数的两个八位二进制表示形式的位置? #包括 #包括 void displayEightBits(无符号整数值)//原型 内部主(空){ 无符号整数x; printf(“%s”,“输入非负整数:”); scanf(“%u”、&x); 显示八位(x); } void displayEightBits(无符号整数值) { 无符号整数c; unsigned int displayMask=1,c,binary,bit,C,Binary,Bit,因此,如果我正确理解了这个问题,您已经: #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 ); displayEightB
#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' );
}
你想要:
00000000 00001111 11110000 11111111
你需要有四个for循环,其中一个循环从7到0,第二个循环从15到8,第三个循环从23到16,第四个循环从31到24。如果循环变量是idx,你只需要这样做
11111111 11110000 00001111 00000000
在循环之间保持字节之间用空格分隔
我不是在为您编写完整的代码,但是根据这些说明,您应该能够编制一个工作程序
编辑:好的,如果我的答案不清楚,我写了代码。我希望这段代码能让我的答案更清楚:
putchar(' ');
无符号值=0x12345678U;
int-idx;
对于(idx=7;idx>=0;idx--)
putchar(value&(1您可以使用一个数组并将最后一个数字作为数组中的第一个这与更改尾数有关吗?次要:使用1u您是要反转位还是反转字节?您所说的“两个八位二进制表示法”是什么意思?我还是有点不明白你到底在说什么for循环。请你再详细说明一下这句话,“7到0,第二个循环从15到8,第三个循环从23到16,第四个循环从31到24。”还有什么(1如果您只想翻转位,如答案开头的位模式,则只需执行value=~value;
(~
运算符不是按位操作).啊,也许我的例子不太好。我问原始海报是否想将BINARYA,BINARYB,BINARYC,BINARYD二进制字符串重新排列为BINARYD,BINARYC,BINARYB,BINARYA的顺序。巧合的是,你可以通过按位得到结果,而不是针对我特定的例子,但这不是我的意思。OP说“将左字节向右移动,将右字节向左移动”,这似乎是在反转字节
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');