找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2113|回复: 3
收起左侧

嵌入式C语言中CY进位标志位,用来存储移出位时的一点疑惑,还请大神助我一臂之力

[复制链接]
ID:632950 发表于 2020-7-7 12:18 | 显示全部楼层 |阅读模式
举个例子
51hei.png
  temp左移一位,  最高位被移出,是不是就存在了CY里面,然后Data = CY; 但是Data并没有进行移位,
  那按照这种逻辑,是不是意味着CY每次赋值给Data都会覆盖掉前一次的值呢???


回复

使用道具 举报

ID:962990 发表于 2021-8-30 11:14 | 显示全部楼层
个人认为像是存在里面,实际意思还是这个CY进位标志本身功能来解释。
temp<<=1 , 我就看成temp=temp<<1,temp=temp*2,temp=temp+temp,这样就回归到 ADD功能,那CY在进行ADD操作时,如果发生进位就会变成1,没有进位就是0,这边CY没有被覆盖意思,只有CY每次变化的值会覆盖Data,这样就能达到你的输出目的了,无非就是0 1 变化。
EX:
1010+1010 = 1 0100   CY=1
0100+0100 = 0 1000   CY=0
1000+1000 = 1 0000   CY=1
0000+0000 = 0 0000   CY=0
这样就用CY完成了  发送  1 0 1 0

瞎扯淡的,仅供参考
回复

使用道具 举报

ID:624769 发表于 2021-8-30 14:19 | 显示全部楼层
一般, DATA = CY 的话, DATA 应该是一个Bit,
而你DATA 是 unsigned char, 其实做的事,就是 把 CY 复制到 ACC的0位,然后把 ACC复制给DATA.即,会强制把CY,先补全成一个 unsigned char。再赋值给DATA.
所以,不管DATA中原先存的是什么的,最后DATA 要么 = 0x01, 要么 = 0x00
回复

使用道具 举报

ID:94031 发表于 2021-8-30 15:24 | 显示全部楼层
确实是 CY每次赋值给Data都会覆盖掉前一次的值。
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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