电子技术论坛

 找回密码
 快速注册

QQ登录

只需一步,快速开始

搜索
下载方法|用单线程|避免多扣帖子规范|求助必读|发帖建议积分策略|勋章介绍|新人必读获取金币|推广论坛|出售帖子基本礼节|致会员信|版规总则
禁涉政治|反对低俗|举报专帖征集相片|留下足迹|推荐精华上传附件|制作分卷|使用网盘禁发qq群|恶意灌水|纯表情帖加入团队|监督机制|安全上网
查看: 4763|回复: 17

真纠结,C中变量赋值居然不能用二进制

[复制链接]
发表于 2020-2-8 20:09:48 来自手机 | 显示全部楼层 |阅读模式

注册家电维修技术论坛,与同行畅聊维修技术,享更多技术论坛功能。

您需要 登录 才可以下载或查看,没有帐号?快速注册

x
本人一直用汇编,最近才用C ,居然变量赋值二进制数出错
 楼主| 发表于 2020-2-8 20:18:00 来自手机 | 显示全部楼层
例如:数码管驱动中,想显示3,查电路图P0口控制八个发光管,3的编码二进制为01001111,直接P0=01001111居然不行,用十六进制0x4F就可以,这是什么逻辑?看来C还是没汇编好
 楼主| 发表于 2020-2-9 15:28:19 来自手机 | 显示全部楼层
知道了,keil是把01001111当成十进制数装入P0了,因为无符号整形最大值是65536,所以keil只截取了01111,然后把它当作十进制数装进去了
 楼主| 发表于 2020-2-9 15:47:27 来自手机 | 显示全部楼层
除了十进制外都要加前缀,0x表示十六进制,0表示八进制,0b表示二进制
 楼主| 发表于 2020-2-9 15:49:11 来自手机 | 显示全部楼层
P0=0b01001111就对了
 楼主| 发表于 2020-2-9 15:50:52 来自手机 | 显示全部楼层
以前都是用汇编的,二进制直接写就行了,没想到C中却不行
 楼主| 发表于 2020-2-10 09:31:58 来自手机 | 显示全部楼层
不是C语言问题而是编译器问题,不支持二进制数据
发表于 2020-3-12 00:04:50 来自手机 | 显示全部楼层
请教楼主一个问题,编译P1=0×aa出错,P1=0×170就可以,是哪里出问题了呢?
发表于 2020-3-13 11:07:52 | 显示全部楼层
后面加个B
发表于 2020-3-15 21:29:08 | 显示全部楼层
惠志志 发表于 2020-3-12 00:04
请教楼主一个问题,编译P1=0×aa出错,P1=0×170就可以,是哪里出问题了呢?


0xaa是8位十六进制数值,0x170是12位十六进制数值,P1=0x170执行时只取后面8位即P1=0x70(二进制为0111 0000)
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|家电维修技术论坛 ( 鄂ICP备09003585号-2 )

GMT+8, 2024-6-29 01:30 , Processed in 0.075721 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

CopyRight © 电子技术论坛
电子邮箱:8794149@qq.com | 联系 QQ:3081868839 | 官方网址:www.dzdu.com

Qiji. All Rights Reserved


服务条款 | 站长声明

Wuhan Qiji Technology Co., Ltd.武汉奇迹科技有限公司版权所有


鄂ICP备09003585号-2鄂公网安备42010602000420号

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