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;
测试截图:
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位交换.的主要内容,如果未能解决你的问题,请参考以下文章