CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

关于C/C++中的几个数据左右移动问题。

楼主cul(恐龙++)2003-12-01 16:48:32 在 C/C++ / C语言 提问

请问各位前辈,以下五个函数分别是什么功能呢?转化的结果有什么意思呢?  
   
  unsigned   short   V1(unsigned   short   x){  
      return   (((x&0xFF)<<8)|((x>>8)&0xFF));  
  }  
   
  int   V2(int   x){  
      return   (((x&0xFFFF)<<24)|(((x&0xFFFF)<<8)&0x00FF0000)|((x>>8)&0x0000FF00)|((x>>24)&0xFFFF));  
  }  
   
  unsigned   long   V3(unsigned   long   x){  
      return   (((x&0xFFFF)<<24)|(((x&0xFFFF)<<8)&0x00FF0000)|((x>>8)&0x0000FF00)|((x>>24)&0xFFFF));  
  }  
   
  unsigned   long   V4(unsigned   char*   x){  
      return   ((*x<<24)+(*(x+1)<<16)+(*(x+2)<<8)+*(x+3));  
  }  
   
  unsigned   short   V5(unsigned   short   x){  
      return   (unsigned   short)((x>>8)+((x&0xFF)<<8));  
  }  
  问题点数:100、回复次数:3Top

1 楼gladiatorcn(角斗士)回复于 2003-12-01 17:09:16 得分 20

V1把16位无符号整数的高8位和低8位交换Top

2 楼skywarship(很菜的小李)回复于 2003-12-01 17:19:02 得分 5

我怎么觉得好像不对啊  
  V1的表达式如果是从左到右执行的话x&0xff就已经把高8位清0了,怎么能说与低8位交换呢Top

3 楼sklchgg(程程)回复于 2003-12-01 17:47:52 得分 75

1.V1如gladiatorcn()   所说  
  2.V2也是反转,若用这样的形式表示int(ABCD:   ABCD各代表一个字节),调用V2后返回值为DCBA。  
  3.V3跟V2功能类似,仅仅是参数及返回值不同。  
  4.V4表示把x指向的内存字节从当前指针开始共四个字节组合成一个unsigned   long,如x指向“ABCD....”,则得到的返回值为A的asc2码65*2的24次方+B的asc2码66*2的16次方+A的asc2码67*2的8次方+A的asc2码68*2的0次方。  
  5.V5跟V1功能类似,仅仅是参数及返回值不同。Top

相关问题

  • 数据移动
  • 数据移动
  • 在grid数据窗口中,左右移动焦点的问题!
  • 移动数据库
  • c++和数据库
  • tabular数据窗口中,在左右移动时如何冻结某列?
  • C++ Build 数据库问题
  • C#数据库的问题
  • c数据结构问题
  • C# 中的数据转换

关键词

  • xff
  • unsigned short

得分解答快速导航

  • 帖主:cul
  • gladiatorcn
  • skywarship
  • sklchgg

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo