OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6823|回复: 19

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

[复制链接]

11

主题

33

帖子

0

精华

初级会员

Rank: 2

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

使用道具 举报

11

主题

33

帖子

0

精华

初级会员

Rank: 2

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

使用道具 举报

16

主题

409

帖子

0

精华

金牌会员

Rank: 6Rank: 6

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

使用道具 举报

19

主题

702

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3339
金钱
3339
注册时间
2013-7-30
在线时间
708 小时
发表于 2017-8-9 11:30:01 | 显示全部楼层
unsigned int
思想很重要,无论做人还是编程!
我的技术公众号【微联智控工作室】
回复 支持 反对

使用道具 举报

11

主题

33

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2017-7-12
在线时间
46 小时
 楼主| 发表于 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;
回复 支持 反对

使用道具 举报

11

主题

33

帖子

0

精华

初级会员

Rank: 2

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

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

使用道具 举报

3

主题

91

帖子

1

精华

高级会员

Rank: 4

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

使用道具 举报

17

主题

354

帖子

0

精华

高级会员

Rank: 4

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

使用道具 举报

16

主题

409

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1292
金钱
1292
注册时间
2014-12-20
在线时间
534 小时
发表于 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


回复 支持 反对

使用道具 举报

19

主题

702

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3339
金钱
3339
注册时间
2013-7-30
在线时间
708 小时
发表于 2017-8-9 13:42:11 | 显示全部楼层
好好学习C语言
思想很重要,无论做人还是编程!
我的技术公众号【微联智控工作室】
回复 支持 反对

使用道具 举报

10

主题

29

帖子

0

精华

初级会员

Rank: 2

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

使用道具 举报

0

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
128
金钱
128
注册时间
2017-7-8
在线时间
24 小时
发表于 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

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

使用道具 举报

26

主题

1533

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6369
金钱
6369
注册时间
2015-8-25
在线时间
1004 小时
发表于 2017-10-2 08:55:32 | 显示全部楼层
unsigned int word=101010100110101001010101010101;这是定义成了10进制数了好吧,先转成16进制或者10进制。
如果非得一定要用30位的二进制数,不用32位的,那你还是定义位段来用吧
He who fights with monsters should look to it that he himself does not become a monster, when you gaze long into the abyss, the abyss also gazes into you.
过于执着就会陷入其中,迷失自己,困住自己。
回复 支持 反对

使用道具 举报

87

主题

331

帖子

0

精华

高级会员

Rank: 4

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

使用道具 举报

2

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2017-8-4
在线时间
3 小时
发表于 2018-2-1 15:56:45 | 显示全部楼层
wxavuqvm5m 发表于 2017-8-9 11:35
会报错
main.c(167): error:  #23: integer constant is too large
        unsigned int word=1010101 ...

不能这么定义,这样定义后边的一串数字默认是十进制的,要把这个二进制数换成十进制或十六进制定义
回复 支持 反对

使用道具 举报

49

主题

340

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
5246
金钱
5246
注册时间
2012-8-25
在线时间
1024 小时
发表于 2018-4-21 10:05:08 | 显示全部楼层
有的工具是前面加 0b 有的工具好像不行。不行就化成16进制吧
回复 支持 反对

使用道具 举报

1

主题

9

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2018-8-3
在线时间
3 小时
发表于 2018-8-3 11:35:42 | 显示全部楼层
long a = 0B101010101010101010101011010101;
回复 支持 反对

使用道具 举报

7

主题

70

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
444
金钱
444
注册时间
2015-3-25
在线时间
129 小时
发表于 2018-8-3 11:43:05 | 显示全部楼层
建议16进制
回复 支持 反对

使用道具 举报

2

主题

255

帖子

0

精华

高级会员

Rank: 4

积分
821
金钱
821
注册时间
2013-6-5
在线时间
141 小时
发表于 2018-10-10 23:46:56 | 显示全部楼层
wxavuqvm5m 发表于 2017-8-9 11:34
程序报错啊
main.c(167): error:  #23: integer constant is too large
        long int word=1010101 ...

你转成16进制或10进制。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 23:14

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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