OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子新作:阿波罗STM32F767&F429&探索者STM32F4开发板&赶快来下载资料哦。

查看: 401|回复: 14

一个30位的二进制数要怎样定义

[复制链接]

  离线 

6

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2017-7-12
在线时间
26 小时
发表于 2017-8-9 10:10:57 | 显示全部楼层 |阅读模式
正点原子公众号
如题,例如101010101010101010101011010101,这个数据在c语言中要怎样定义,后面的程序中还要进行位运算,跪求高手解答
回复

使用道具 举报

  离线 

6

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2017-7-12
在线时间
26 小时
 楼主| 发表于 2017-8-9 10:18:36 | 显示全部楼层
回复 支持 反对

使用道具 举报

  离线 

16

主题

381

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1146
金钱
1146
注册时间
2014-12-20
在线时间
475 小时
发表于 2017-8-9 11:15:15 | 显示全部楼层
long int 或 unsigned long int
回复 支持 反对

使用道具 举报

  离线 

5

主题

592

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2003
金钱
2003
注册时间
2013-7-30
在线时间
328 小时
发表于 2017-8-9 11:30:01 | 显示全部楼层
unsigned int
思想很重要,无论做人还是编程!
回复 支持 反对

使用道具 举报

  离线 

6

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2017-7-12
在线时间
26 小时
 楼主| 发表于 2017-8-9 11:34:17 | 显示全部楼层
BMN李 发表于 2017-8-9 11:15
long int 或 unsigned long int

程序报错啊
main.c(167): error:  #23: integer constant is too large
        long int word=101010100110101001010101010101;
回复 支持 反对

使用道具 举报

  离线 

6

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2017-7-12
在线时间
26 小时
 楼主| 发表于 2017-8-9 11:35:00 | 显示全部楼层

会报错
main.c(167): error:  #23: integer constant is too large
        unsigned int word=101010100110101001010101010101;
回复 支持 反对

使用道具 举报

  离线 

2

主题

27

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
212
金钱
212
注册时间
2016-12-8
在线时间
125 小时
发表于 2017-8-9 11:41:40 来自手机 | 显示全部楼层
为何一定要用30位呢?用32位不行?
来自: 微社区
回复 支持 反对

使用道具 举报

  在线 

8

主题

198

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
441
金钱
441
注册时间
2017-5-21
在线时间
194 小时
发表于 2017-8-9 11:43:51 来自手机 | 显示全部楼层
定义32位,有两位可以不使用
回复 支持 反对

使用道具 举报

  离线 

16

主题

381

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1146
金钱
1146
注册时间
2014-12-20
在线时间
475 小时
发表于 2017-8-9 11:50:46 | 显示全部楼层
wxavuqvm5m 发表于 2017-8-9 11:34
程序报错啊
main.c(167): error:  #23: integer constant is too large
        long int word=1010101 ...

厉害了!!!
long int word = 714773845;
QQ截图20170809115000.jpg


回复 支持 反对

使用道具 举报

  离线 

5

主题

592

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2003
金钱
2003
注册时间
2013-7-30
在线时间
328 小时
发表于 2017-8-9 13:42:11 | 显示全部楼层
好好学习C语言
思想很重要,无论做人还是编程!
回复 支持 反对

使用道具 举报

  离线 

10

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
66
金钱
66
注册时间
2017-7-22
在线时间
22 小时
发表于 2017-8-11 18:53:35 | 显示全部楼层
这位大哥需要好好学习C中各种进制的表示方法
回复 支持 反对

使用道具 举报

  离线 

0

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
104
金钱
104
注册时间
2017-7-8
在线时间
20 小时
发表于 2017-8-15 00:30:50 来自手机 | 显示全部楼层
wxavuqvm5m 发表于 2017-8-9 11:34
程序报错啊
main.c(167): error:  #23: integer constant is too large
        long int word=1010101 ...

你这样 赋值,你知道你这个数有好大吗?改成8进制全面加0 或16进制前面加0x吧
回复 支持 反对

使用道具 举报

  离线 

4

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2017-8-15
在线时间
11 小时
发表于 2017-8-15 20:16:46 | 显示全部楼层
不是特别理解楼主的意思,因为我没有在书上看到过用二进制的形式赋值操作的。即便是后边要进行位运算,也可以直接按以下定义 unsigned int  a = 0x2AAAAAD5; 后边进行位运算,比如把第12位清零,可以采用语句a &= 0xFFFFFEFFF完成
回复 支持 反对

使用道具 举报

  离线 

5

主题

237

帖子

0

精华

高级会员

Rank: 4

积分
583
金钱
583
注册时间
2015-8-25
在线时间
85 小时
发表于 2017-10-2 08:55:32 | 显示全部楼层
unsigned int word=101010100110101001010101010101;这是定义成了10进制数了好吧,先转成16进制或者10进制。
如果非得一定要用30位的二进制数,不用32位的,那你还是定义位段来用吧
回复 支持 反对

使用道具 举报

  离线 

86

主题

327

帖子

0

精华

高级会员

Rank: 4

积分
893
金钱
893
注册时间
2016-3-26
在线时间
115 小时
发表于 2017-10-5 11:54:42 | 显示全部楼层
没有三十位的数给你定义,你可以定义32位的用前30位
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则




QQ|联系我们|手机版|官方淘宝店|新浪微博|微信公众平台|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2017-11-21 18:13

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表
/* */