求一个补码扩展的宏

qingcairousi 2009-02-28 05:12:46
我在搞的一个通讯协议,其中有一个有符号整数是只有12个位的,用补码表示。
我想把它转换成一个short int,写函数很容易实现转换,但感觉效率不够高,有没有比较高效的宏?
...全文
96 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenyingshu 2009-03-02
  • 打赏
  • 举报
回复
还在学习,不过用宏应该是不错的。
就像一楼说的。
qingcairousi 2009-03-02
  • 打赏
  • 举报
回复
嗯……有没有更加通用的?比如说小于16位的任意长度补码扩展为16位补码那种
dongpy 2009-02-28
  • 打赏
  • 举报
回复
可以先左移,再右移。

#define CvtInt12To16(d) ((d)<<20>>20)
ysmashimaro 2009-02-28
  • 打赏
  • 举报
回复
内联不好吗?
lingyin55 2009-02-28
  • 打赏
  • 举报
回复
mark学习了
xianyuxiaoqiang 2009-02-28
  • 打赏
  • 举报
回复
#define xchange(val) ((val & 0x800) ? (val | 0xf000) : (val & 0x0fff))
  • 打赏
  • 举报
回复
嗯,可以用宏移位实现。
如果写成函数,内联比较合适。
ltc_mouse 2009-02-28
  • 打赏
  • 举报
回复
把函数定义成inline可以吗?

写一个宏,lz参考:

#define Int12ToInt16(val) ( (val & (1<<11)) ? (val|0xf000) : val )
EXCEL万能百宝箱是著名微软办公软件EXCEL(Microsoft Office for EXCEL)增强型插件。包括230个菜单功能和100个左右自定义函数,集330个宝贝于一身,但体积小于12MB。当安装万能百宝箱后,如果您使用Excel 2003,则将产生【万能百宝箱】菜单,包括230多个子菜单;如果您使用Excel 2013或者2010,将产生【经典】与【万能百宝箱】功能区。根据各功能的特点,对子菜单作了18个分类, 而在函数向导对话框中也新增100个左右新的函数,用于扩展Excel的基本功能。且所有功能都通用于Excel 2003、2007和2010、2013。支持中英文显示与繁简体操作系统、拥有30多款华丽的皮肤界面,支持Excel2010全面隐藏选项卡,这个插件还前承了Excel2003经典样式菜单,目的是方便那些从Excel2003转向使用2010或2013版的朋友熟练使用。兼并了ExcelTabs工作薄多标签插件,方便在不同工作薄中切换与使用。跨工作薄存储格逐步提示输入功能让你录入数据更轻松。图片批量尺寸及导入多列图片具备16项可设置参数,多达50种组合导入方式,满足各行业不同需的图片导入导出与规范排版。表达式计算精灵让数学函数及复杂公式表达式全自动计算一切变得那么轻巧与高效,且能与EXCEL智能交互操作。工程解密功能可以解除VBA工程不可查看的EXCEL工程文档,解除后重新打开文档可100%准确还原源代码,是VBA开发者的必备利器。采用字典补码查漏纠错技术实现台湾繁体系统中繁简转换与GB2BIG5转换准确率达100%,达到微软同效功能。更内置了比Vlookup()函数更强大且好用的VlookupIn()函数。能对VBA程式实现撤销与还原操作,防止鼠标误点功能与误操作。由全球顶尖级水平微软MVP专家与财会管理信息团队历时多年开发,是与EXCEL用户与爱好者共同努力的结晶,被誉为"全能的办公瑞士军刀"。 安装不成功原因分析: 对于无法安装的朋友请注意以下6点 : 一:必须是完整版OFFICE,不能是绿色版、精简版,它们不支持COM加载.   二:必须关闭Excel状态下安装或者删除工具,安装后重启Excel即可.   三:如果是VISTA或WIN 7,必须以管理员用户安装,且从控制面板中关掉用户帐户控制(UAC)功能.   四:如果您装了其它的EXCEL工具,请先关掉它,它们有可能删除本工具的菜单.   五:不要使用除系统之外的皮肤包桌面主题显示,如果安装了请先卸载掉,以免影响工具正常显示. 六: 如果XP系统 管理员权限 32位Office个别版本不能自动加载工具箱菜单的: Office按钮--》Excel选项--》Excel加载项--》Com加载项--》转到按钮--》添加安装目录中的ExcelTools.Dll文件并确认即可. EXCEL万能百宝箱截图

64,371

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧