C语言#define中的1UL

先看代码
#define TIMER_INTF         (1UL << 5)

第一次遇到代码中出现UL,只有数值常数才有后缀说明,这里面UL都是整形常数后缀,这里的UL有两个作用:强制转换,解决溢出问题。

1.C语音中数字常量的表示方式:
  • (1)数值常数有:整型常数、浮点常数;
  • (2)整型常数的表示形式有:十进制形式、以0开头的八进制形式、以0x开头的十六进制形式,无二进制形式。
  • (3)浮点常数的表示形式有:科学计数形式和小数点形式。
2.常见的后缀分两种:整形常数后缀、浮点型常数后缀
  • 整形常数后缀:u,U,l,L,UL,ul (不区分大小写,整型常数默认是signed int的。)
  • 浮点型常数后缀:f,F,l,L,LF,lf (不区分大小写,浮点常数默认是double的,因浮点型常数总是有符号的,故没有u或U后缀。)
回到正题:

1ul 表示无符号长整形,最高位不作符号位,1ul在32位计算机中存储二进制为

0000 0000 0000 0000 0000 0000 0000 0001
在这里插入图片描述
<<5 左移5个单位, 即把1ul 的二进制向左移动5个单位,

   第一排:              0000 0000 0000 0000 0000 0000 0000 0001

   第二排:        0000 0000 0000 0000 0000 0000 0000 0001

   第三排:              0000 0000 0000 0000 0000 0000 0010 0000

第一排是1ul在计算机中的二进制, 第二排是把1ul左移5个单位, 第三排是左移5后得到的结果,前面溢出的5个0被舍弃, 后边的5个空位补0, 最后得到的十进制是32。

  • 11
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

炒番茄蛋的厨子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值