Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何交换无符号整数的两个八位二进制表示形式的位置? #包括 #包括 void displayEightBits(无符号整数值)//原型 内部主(空){ 无符号整数x; printf(“%s”,“输入非负整数:”); scanf(“%u”、&x); 显示八位(x); } void displayEightBits(无符号整数值) { 无符号整数c; unsigned int displayMask=1_C_Binary_Bit - Fatal编程技术网

如何交换无符号整数的两个八位二进制表示形式的位置? #包括 #包括 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');