OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子全套STM32开发资料,上千讲STM32视频教程,RT1052教程免费下载啦...

查看: 883|回复: 16

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

[复制链接]

  离线 

11

主题

33

帖子

0

精华

初级会员

Rank: 2

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

使用道具 举报

  离线 

11

主题

33

帖子

0

精华

初级会员

Rank: 2

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

使用道具 举报

  离线 

16

主题

409

帖子

0

精华

金牌会员

Rank: 6Rank: 6

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

使用道具 举报

  离线 

5

主题

619

帖子

0

精华

金牌会员

Rank: 6Rank: 6

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

使用道具 举报

  离线 

11

主题

33

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
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

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

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

使用道具 举报

  离线 

2

主题

33

帖子

0

精华

中级会员

Rank: 3Rank: 3

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

使用道具 举报

  离线 

16

主题

345

帖子

0

精华

高级会员

Rank: 4

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

使用道具 举报

  离线 

16

主题

409

帖子

0

精华

金牌会员

Rank: 6Rank: 6

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

主题

619

帖子

0

精华

金牌会员

Rank: 6Rank: 6

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

使用道具 举报

  离线 

10

主题

29

帖子

0

精华

初级会员

Rank: 2

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

使用道具 举报

  离线 

0

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
120
金钱
120
注册时间
2017-7-8
在线时间
23 小时
发表于 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完成
回复 支持 反对

使用道具 举报

  离线 

8

主题

433

帖子

0

精华

金牌会员

Rank: 6Rank: 6

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

使用道具 举报

  离线 

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 ...

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

使用道具 举报

  离线 

21

主题

193

帖子

0

精华

金牌会员

Rank: 6Rank: 6

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

使用道具 举报

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

本版积分规则




关闭

"原子哥”推荐上一条 /1 下一条

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

GMT+8, 2018-7-23 23:27

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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