单片机编程 运用“与”运算,判断某8位二进制数是奇数还是偶数个1
泰科博思
2024-12-27 广告
2024-12-27 广告
CASTEP是一款基于第一性原理计算方法的材料模拟软件,其优势包括:1.高精度。CASTEP使用密度泛函理论(DFT)进行第一性原理计算。这种基于波函数的方法不依赖于实验数据,可以获得非常高的准确性。2.广泛适用性。CASTEP适用于多种材...
点击进入详情页
本回答由泰科博思提供
展开全部
//假设R3中存放待判数值,R4存放临时结果。如果寄存器不足,就用内存代替。
MOV R0,1
MOV R1,0 //1个数计数器
MOV R2,0 //循环次数,共循环8次
LABEL_LOOP:
CMP R2,8 //循环次数比较
BE LOOP_END //如果已经循环8次则跳转到LOOP_END
AND R4,R3,R0 //R3,R0按位与运算,结果存入R4
CMP R4,0 //依次取出相应的位与0比较
BE LOOP_NEXT //若相等则跳转到LOOP_NEXT,否则计数器加1再跳转
INC R1
B LOOP_NEXT
LOOP_NEXT:
INC R2
SHL R0 //R0左移一位,以便取出下一位
B LABEL_LOOP
LOOP_END:
AND R1,R1,1 //R1中存放了"1"的个数
CMP R1,1
...
//到这里结束了,R1如果等于1那么有奇数个“1”,否则偶数个“1”
由于共有8位数,最多0b1000个"1",只有R1最低位为1时才是奇数个“1”
MOV R0,1
MOV R1,0 //1个数计数器
MOV R2,0 //循环次数,共循环8次
LABEL_LOOP:
CMP R2,8 //循环次数比较
BE LOOP_END //如果已经循环8次则跳转到LOOP_END
AND R4,R3,R0 //R3,R0按位与运算,结果存入R4
CMP R4,0 //依次取出相应的位与0比较
BE LOOP_NEXT //若相等则跳转到LOOP_NEXT,否则计数器加1再跳转
INC R1
B LOOP_NEXT
LOOP_NEXT:
INC R2
SHL R0 //R0左移一位,以便取出下一位
B LABEL_LOOP
LOOP_END:
AND R1,R1,1 //R1中存放了"1"的个数
CMP R1,1
...
//到这里结束了,R1如果等于1那么有奇数个“1”,否则偶数个“1”
由于共有8位数,最多0b1000个"1",只有R1最低位为1时才是奇数个“1”
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
mcs-51单片机,奇偶校验位P在程序状态字PSW(特殊功能寄存器)里,PSW.0就是P。
P奇偶校验位。它用来表示ALU运算结果中二进制数位“1”个数的奇偶性。若为奇数,则P=1;否则为0。运算结果有奇数个1,P=1;运算结果有偶数个1,P=0.
P奇偶校验位。它用来表示ALU运算结果中二进制数位“1”个数的奇偶性。若为奇数,则P=1;否则为0。运算结果有奇数个1,P=1;运算结果有偶数个1,P=0.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
char par
int i,odd;
for(i=0;i<8;i++)
{
if(par &= 0x01)
odd++;
par >>= 1;
}
int i,odd;
for(i=0;i<8;i++)
{
if(par &= 0x01)
odd++;
par >>= 1;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询