社区
C语言
帖子详情
我看Charles Petzold 的windows程序设计碰到了许多问题,这是其中一个?
pumsscco
2005-11-03 12:57:08
iWidthBytes = (cx * cBitsPixel + 15) & ~15) >> 3 ;
这个应该怎么理解???
可能有错误吧!
但是iWidthBytes = ((cx * cBitsPixel + 15) & ~15) >> 3 ;
又应该怎么理解呢???????
...全文
123
6
打赏
收藏
我看Charles Petzold 的windows程序设计碰到了许多问题,这是其中一个?
iWidthBytes = (cx * cBitsPixel + 15) & ~15) >> 3 ; 这个应该怎么理解??? 可能有错误吧! 但是iWidthBytes = ((cx * cBitsPixel + 15) & ~15) >> 3 ; 又应该怎么理解呢???????
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
pumsscco
2005-11-04
打赏
举报
回复
希望能有更多的本书高手来指导我,谢谢大家!
lujun-cc
2005-11-03
打赏
举报
回复
楼主,
iWidthBytes = (cx * cBitsPixel + 15) & ~15) >> 3 ;
是计算Windows位图中每行象素数目的,在Windows中,在为位图分配内存时,位图中的每一行所占用的内存应该是偶数字节,这个计算公式是这样的:
iWidthBytes = 2*((cx * cBitsPixel + 15)/16)
所以,写成C语句,再采用以为操作提高效率,就得到了楼主给出的表达式了,至于这个表达式中的位操作的含义,看楼上的说明就会明白的!
vcan
2005-11-03
打赏
举报
回复
其实楼主没有把应用背景说出来,因此各位阅读就无法正确理解了。
1.代码目的:这段代码用来计算图片(估计是BMP文件)每行像素所占用的字节数量的。而此文件格式规定,字节长度2字节对齐,即不足2字节的按2字节计算。
2.第一种情况确实缺失了一个 (
变量含意:
cBitsPixel:每像素占用的bit数,
cx:每行像素个数
代码含意:
先+15,然后屏蔽低4bit,再向右移动3bit(即相当于除8),等效于int((n+15)/16*2)的效果,只是bit运算速度快,效率高,所以作者用这种计算方式
运算简单介绍:
~非符号,~15,即低4bit为0,其它高bit为1
&与运算,不多说,不明白的请参考任何C教材
VCAN
gnixemos
2005-11-03
打赏
举报
回复
不是少了一个(?
睡在床板下_
2005-11-03
打赏
举报
回复
楼上说的和我感觉一样啊,& ,| ,和<< ,>> 我也没用过~~
这些知道意思就可以了
benlei999
2005-11-03
打赏
举报
回复
这中间有一些与、移位的操作(不是很常用的计算符),反正就是为了方便的计算出宽度。其实学这本书你不用理会这些细节。如果你一定要知道怎么计算的,可以查一下c的语法,自己推出来。老实说,我还没用过&和>>
windows
程序设计
我将这种方法称作「古典」
Windows
程序设计
。
这是
我们在1985年为
Windows
1.0写程序的方法,它今天仍是写作
Windows
程序的有效方法。 API和内存模式 对于程序写作者来说,操作系统是由本身的API定义的。API包含了...
KML 生成软件的使用
最后
碰到
的
一个
令人头疼的
问题
就是保存文件,开始想参考第十一章的 POPPAD 程序,看来没有把这个程序吃透,就放弃了。准备使用《
WINDOWS
核心编程》上面的文本框来输出生成的经纬度文件,当我安装号运行程序库并配置...
编程及C&C++初学者 FAQ.pdf
- **
Windows
编程**:《Programming
Windows
》(
Charles
Petzold
)。 - **Unix/Linux/BSD系统**:《UNIX Network Programming》(W. Richard Stevens)。 - **数据结构和算法**:《Introduction to Algorithms》(Thomas H...
windows
程序设计
TYPER程序 例题解析
/*-------------------------------------- TYPER.C -- Typing Program ... (c)
Charles
Petzold
, 1998 --------------------------------------*/ #include #define BUFFER(x,y) *(pBuffer +
Windows
程序设计
02:永恒的Hello World
同其他的编程语言教材一样,
Charles
Petzold
同样选择了使用“HelloWorld”作为这部堪称经典的《
Windows
程序设计
》的第
一个
Windows
程序范例。 我把它称为永恒的“HelloWorld”。 在开始学习如何编写
Windows
应用...
C语言
70,037
社区成员
243,243
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章