免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4410 | 回复: 9

[C] 求助 #define和移位操作符的用法 [复制链接]

论坛徽章:
0
发表于 2009-12-04 16:30 |显示全部楼层
5可用积分
程序中,宏定义
#define   ARRAY_SIZE 6   
  #define   MAX_NUM (1<<ARRAY_SIZE)  

下面的移位操作是什么意思呢,为什么这个地方定义MAX_NUM 要这样定义呢?

论坛徽章:
0
发表于 2009-12-04 17:06 |显示全部楼层
二进制位左移
1的二进制是
00000001

左移6位就是
01000000

也就是2的七次方

论坛徽章:
0
发表于 2009-12-04 21:58 |显示全部楼层
是2的6次方

论坛徽章:
0
发表于 2009-12-04 23:04 |显示全部楼层

  1. #define   ARRAY_SIZE 6   
  2. #define   MAX_NUM (1<<ARRAY_SIZE)  
复制代码


MAX_NUM就是2的6次方,至于没什么要这么定义主要是为了修改方便,如果是定义
#define   MAX_NUM   2^6

假设ARRAY_SIZE变成5后呢?你又手动2^5????

所以这里的ARRAY_SIZE和MAX_NUM是存在关系的, 所以就这么定义了。

论坛徽章:
0
发表于 2009-12-04 23:51 |显示全部楼层
原帖由 ubuntuer 于 2009-12-4 23:04 发表

#define   ARRAY_SIZE 6   
#define   MAX_NUM (1

  
^这符号是这么用的么?

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
发表于 2009-12-05 00:13 |显示全部楼层

回复 #5 churchmice 的帖子

lss中 "2^6" 应该指的是它的结果 —— 0x40 —— 但比较难写(或者难算),所以用了一个"表达式"

[ 本帖最后由 OwnWaterloo 于 2009-12-5 00:14 编辑 ]

论坛徽章:
0
发表于 2009-12-05 10:42 |显示全部楼层
原帖由 OwnWaterloo 于 2009-12-5 00:13 发表
lss中 "2^6" 应该指的是它的结果 —— 0x40 —— 但比较难写(或者难算),所以用了一个"表达式"

呵呵,还是你了解我!!就是2的6次方。我一般就是这么写的2的6次方 2^6

论坛徽章:
0
发表于 2009-12-05 11:01 |显示全部楼层
好像basic里面是用"^"表示乘方,太早了记不清了.

论坛徽章:
0
发表于 2009-12-06 19:49 |显示全部楼层
原帖由 notbusy 于 2009-12-4 21:58 发表
是2的6次方


应该是这个。

论坛徽章:
0
发表于 2009-12-08 23:36 |显示全部楼层
就是2的6次方,c语言中^是异或运算符号,不能表示乘方,不用移位就得用函数了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP