c程序的问题 20
老师出了道题,没想明白。小弟在这里请教各位大神!题目如下使用矩阵按键,数码管。按下一个键,在数码管上显示一个数,再按下一个键,再显示一个数,切前面的数码管不灭,一共用到六...
老师出了道题,没想明白。小弟在这里请教各位大神!
题目如下
使用矩阵按键,数码管。按下一个键,在数码管上显示一个数,再按下一个键,再显示一个数,切前面的数码管不灭,一共用到六个数码管,六个按键。数为一到六!我们用的是89C51单片机!头文件是include<reg51.h》
急用!各位大神们帮帮忙!小弟在线等! 展开
题目如下
使用矩阵按键,数码管。按下一个键,在数码管上显示一个数,再按下一个键,再显示一个数,切前面的数码管不灭,一共用到六个数码管,六个按键。数为一到六!我们用的是89C51单片机!头文件是include<reg51.h》
急用!各位大神们帮帮忙!小弟在线等! 展开
展开全部
4、 a&3是用a跟00000011这样一个二进制数(也就是3)进行“按位与”运算,“按位与”的规则是跟0与得0,跟1与保持原样,所以这个按位与运算的结果是取得a的最后两个二进制位表示的值。
a%4是计算a除以4的余数,在计算机里,数都是用二进制表示的,每一个二进制位的权值从后向前依次是1、2、4、8、16……,除以4的余数就是不足4的部分,也就是最后两个二进制位表示的值。
所以,不管a的值是几,这两个的运算结果总是相等的。
9、 数组名表示的是一个地址,*是通过地址访问变量,不需要是指针,所以可以*a。关于++,比如有这样一个定义:int i=5;之后我们可以用i++,但我们不可以用5++。而数组名所表示的地址实际上就是一个具体的数,比如0xFFFFFFB0,我们不能对一个地址进行a++运算,如果用一个指针(int*p=a;)来保存这个地址,对指针我们可以p++。 你也可以这么理解:数组名是一个地址常量,不能++。
a%4是计算a除以4的余数,在计算机里,数都是用二进制表示的,每一个二进制位的权值从后向前依次是1、2、4、8、16……,除以4的余数就是不足4的部分,也就是最后两个二进制位表示的值。
所以,不管a的值是几,这两个的运算结果总是相等的。
9、 数组名表示的是一个地址,*是通过地址访问变量,不需要是指针,所以可以*a。关于++,比如有这样一个定义:int i=5;之后我们可以用i++,但我们不可以用5++。而数组名所表示的地址实际上就是一个具体的数,比如0xFFFFFFB0,我们不能对一个地址进行a++运算,如果用一个指针(int*p=a;)来保存这个地址,对指针我们可以p++。 你也可以这么理解:数组名是一个地址常量,不能++。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询