c语言编程将16位无符号数的高8位和低8位交换.

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言编程将16位无符号数的高8位和低8位交换.相关的知识,希望对你有一定的参考价值。

取出高8位,然后右移8位,再取出低8位,然后左移8位,再把它们相加就可以了,代码:

#include<stdio.h>
unsigned short MyConvert(unsigned short sval)

return ((sval&0x00ff)<<8)  + ((sval&0xff00)>>8);

int main()

unsigned short sval = 0xabcd;
printf("%d,0x%X\\n", sval, sval);
sval = MyConvert(sval);
printf("%d,0x%X\\n", sval, sval);
return 0;

测试截图:

参考技术A #include <stdio.h>
void main()

    short num16bit;
    char num8bit;
    printf("please input a 16-bit number in decimal:");
    scanf("%d", &num16bit);
    num8bit = (char)(num16bit>>8);
    num16bit <<= 8;
    num16bit &= 0xff00;
    num16bit |= num8bit;
    printf("Flip 8-bit of this number is : %d.\\n", num16bit);

参考技术B 可以这样吧,对于无符号变量 tar % pow(2,8) * pow(2,8) + tar/pow(2,8)追问

可以写下完整的程序吗?

有符号数和无符号数

  数据类型的最高位用于标识数据的符号

最高位为1,表明这个数为负数

最高位为0,表明这个数为正数


   在计算机内部,用补码表示有符号数

----正数的补码为正数本身

----负数的补码为改数的绝对值各位取反后加1


  在计算机内部用原码表示无符号数

----无符号数默认为正数

-----无符号数没有符号位


  对于固定长度的无符号数

----MAX_VALUE+1-------->MIN_VALUE

----MIN_VALUE - 1-------->MAX_VALUE

   unsigned 将变量声明为无符号类型

   在C语言中,只有整数类型才能声明为unsigned类型

   当一个有符号数和一个无符号数进行运算时,有符号数将会被当做无符号数进行运算。也就是说,当有符号数为负数时,那么这个有符号的负数和一个无符号数运算时,它就变成了一个很大的正数。

----当无符号数和有符号数混合计算时,会将有符号数转换为无符号数后再进行运算,结果为无符号数。


本文出自 “梵高说我脑子有病” 博客,谢绝转载!

以上是关于c语言编程将16位无符号数的高8位和低8位交换.的主要内容,如果未能解决你的问题,请参考以下文章

如何将一个32位的高16位和低16位相加

什么是STM32的高寄存器和低寄存器?

Swift3.0教程-基本数据类型

delphi 中byte类型

C语言中,unsigned int型数据的取值范围是

无符号数和有符号数的转化