MiGL Tech.

苟利国家生死以,岂因祸福避趋之~

用户操作
[即时聊天] [发私信] [加为好友]
米国梁ID:BoyMgl
26193次访问,排名4520好友7人,关注者10
E-mail:miguoliang61620@gmail.com
BoyMgl的文章
原创 57 篇
翻译 0 篇
转载 0 篇
评论 14 篇
米国梁的公告
系统分析师,信息与计算科学本科在读。
最近评论
BoyMgl:对于灰度图像而言,尤其是一些医学图像,反色可以凸显一些正常情况下不易识别的色彩细节,帮助分析~
chonsky:求反色干嘛用?
hzjphy:做过两年的开发
想通过考试的方式让自己的知识系统化
BoyMgl:并没有什么大的分析工作,通常是网站建设,还有些自己写的框架和类库,然后就是一些在学校里才有的课题的分析和设计,另外就是极其喜欢分析其他人的作品!!
hongszh@gmail.com:很想了解你说得很多分析工作都是那方面的工作?很惭愧,我是05毕业后才开始真正做开发工作。
文章分类
收藏
    相册
    我画的图
    技术联盟
    iShowing.net
    SJW's World
    vczh的博客
    YouYee.org
    存档
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 C/C++ 中的移位操作拾遗收藏

    新一篇: 系统分析师考试通过后的反思 | 旧一篇: 关于 IMAPLAB

    引言

    最近笔者一直在做JPEG的解码工作,发现用完全使用哈夫曼树进行解码比较费时,而使用表结构存储编码和值的对应关系比较快捷,但是也存在比较难处理的地方,比如解码工作通常是以位为单位的操作,这里必然会涉及到移位操作,而笔者之前对位的操作很少,经验很欠缺,经过这次历练终于发现了一个自己曾经忽视的东西,那就是C/C++中的移位操作容易出错的情况。

    1、什么样的数据类型可以直接移位

    char、short、int、long、unsigned char、unsigned short、unsigned int、unsigned long都可以进行移位操作,而double、float、bool、long double则不可以进行移位操作。

    2、有符号数据类型的移位操作

    对于char、short、int、long这些有符号的数据类型:

    • 对负数进行左移:符号位始终为1,其他位左移
    • 对正数进行左移:所有位左移,即 <<,可能会变成负数
    • 对负数进行右移:取绝对值,然后右移,再取相反数
    • 对正数进行右移:所有位右移,即 >>

    3、无符号数据类型的移位操作

    对于unsigned char、unsigned short、unsigned int、unsigned long这些无符号数据类型:

    没有特殊要说明的,使用<< 和 >> 操作符就OK了

    结束语

    8086 中存在逻辑移位、算术移位,而C\C++中的移位似乎既不是逻辑移位,也不是算术移位。

    比如-1,我们若对它右移1位,C的结果仍旧是-1,事实上无论右移多少位始终是-1,逻辑移位得到的结果(8位表示)应该是-128,所以这点要注意。

    发表于 @ 2008年07月06日 22:54:29|评论(loading...)|收藏

    新一篇: 系统分析师考试通过后的反思 | 旧一篇: 关于 IMAPLAB

    评论:没有评论。

    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © 米国梁