Ⅰ 51单片机中c语言奇偶校验位如何设置
在51单片机中,只要将一个值传送给累加器,这个数的奇偶校验值就会影响P。一般而言,在串行通讯中为确保传输数的准确,用到校验位的情况比较多。以下是程序代码:
#include
main()
{
char dat;
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
TR1=1;
SCON=0xd0;
while(1)
{
dat++;
ACC=dat;
TB8=P; //校验位送第九数据位TB8
SBUF=ACC;
while(TI==0);
TI=0;
}
}
Ⅱ c语言编程 奇偶归一猜想步数 急求,多谢!!
#include<stdio.h>
intmain(){
intn,cnt=0;
scanf("%d",&n);
while(n!=1){
if(n%2==0)n=n/2;
elsen=n*3+1;
cnt++;
}
printf("%d ",cnt);
return0;
}
Ⅲ c语言 判断奇偶 求助!!!
在计算机里,数都是二进制的,从最右面开始,分别是2的0次幂、1次幂……n次幂。那么从2的1次幂开始到2的n次幂相加和是2的n+1次幂-2(n>=1,因为我们是从2的0次幂开始的)。这个和一定是偶数。那么这个数本身是奇还是偶,就取决于2的0次幂这位,那如果这位是1则这个数为奇,否则为偶。
10在机器里的表示为1010,那它和1(0001)”与“必定为0。即规律为:和1“与”结果是0则这个数为偶否则为奇。
Ⅳ 角谷猜想,C语言,输出过程
代码比较简单,各语句意义见注释。。。
#include<stdio.h>
intmain(intargc,char*argv[])
{
inti;/*定义要处理的变量*/
scanf("%d",&i);/*输入变量值*/
while(i!=1)
{
if(i%2)/*奇数*/
{
printf("%d*3+1=%d ",i,i*3+1);/*按题目要求的格式打印出来*/
i=i*3+1;/*更新变量值*/
}
else/*偶数*/
{
printf("%d/2=%d ",i,i/2);/*按题目要求的格式打印出来*/
i=i/2;/*更新变量值*/
}
}
printf("END ");/*最后打印END*/
return0;
}
另外几个测试结果图片:
Ⅳ 求C语言编程。。 输入一个8bit数,交换奇偶位数据。。
#include "stdio.h"
typedef unsigned char byte;
void PrintByte(byte b)
{
int i;
byte bit;
for (i=7; i>=0; i--)
{
bit = 1<<i;
bit = bit & b;
printf("%1d",bit>0?1:0);
}
}
int main()
{
char c = 'a';
byte f,s,fr,sr;
int i;
printf("c =");
PrintByte((byte)c);
printf("\n");
for (i = 0; i < 8; i+=2)
{
f=1<<i;
s=1<<(i+1);
fr=c&f;
sr=c&s;
c=(c&(~f))^(sr>>1);
c=(c&(~s))^(fr<<1);
printf("c =");
PrintByte((byte)c);
printf("\n");
}
return 0;
}
Ⅵ 猜数游戏c语言
#include <stdio.h>
#include <stdlib.h>
main()
{
int n,t,g;
char c;
while(1)
{
n = 1 + rand() % 100;
printf("请猜一个1~100的数字:");
scanf("%d",&g);
t=1;
while(g!=n)
{
if(t==10) break;
if(g<n) printf("猜小了哦\n");
else printf("猜大了哦\n");
scanf("%d",&g);
t++;
}
if(t==1) printf("太棒了,一次就猜对了!\n");
else if(t>2 && t<5) printf("猜了%d次,也不错哦。\n",t);
else if(t>4 && t<8) printf("猜了%d次,还可以\n",t);
else if(t==8 || t==9) printf("猜了%d次才对,你乱猜的吧\n",t);
else if(t==10) printf("怎么猜了10次还不对啊,算了,猜下一个吧。\n");
if((c=getchar())=='q') break;
}
}
Ⅶ C语言 编写一个猜数字游戏,规则:使用随机函数产生一个5位数,输入猜测数据,判断几个正确,详细如下:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
void main()
{
intA=0,B,i,j,k=0,a[5],g[5];
printf("请输入你猜测的一个5位数数字\n");
scanf("%d",&k);
while(k<12345||k>99999)
{
printf("你输入了一个非常规数据,请重新输入\n");
scanf("%d",&k);
}
srand((unsignedint)time(NULL));
for(i=0;i<5;i++)
{
a[i]=rand()%9+1;
for(j=0;j<i;j++)
while(a[i]==a[j])
{
a[i]=rand()%9+1;
j=-1;
}
}
printf("随机给出的数字为\n");
for(i=0;i<5;i++)
printf("%d",a[i]);
printf("\n");
for(i=4;i>=0;i--)
{
g[i]=k%10;
k=(k-g[i])/10;
}
for(i=0;i<5;i++)
for(j=0;j<5;j++)
{
if(g[i]==a[j])
{
A++;
if(i==j)
B=i+1;
}
}
if(A==5)
printf("你猜测的全部正确\n");
else
{
printf("你猜对的个数:%d\n",A);
printf("你猜对数字的位置:第%d个\n",B);
}
}
Ⅷ c语言:随机产生10个两位正整数,分别统计其中偶数和奇数的个数,以及各类数据之和。
#include<stdio.h>
#include<time.h>
voidmain()
{
inti,a[10],d1=0,d2=0,s1=0,s2=0;
printf("随机生成10个两位正整数: ");
srand(time(NULL));
for(i=0;i<10;i++)
{
a[i]=rand()%(99-10+1)+10;
printf("%d",a[i]);
}
for(i=0;i<10;i++)
if(a[i]%2){d1++;s1+=a[i];}
else{d2++;s2+=a[i];}
printf(" 偶数%d个,和为%d 奇数%d个,和为%d",d2,s2,d1,s1);
}
Ⅸ 51单片机中C语言奇偶校验位如何设置
MOV
A,
#待发数据
;数据进了A,即刻生成校验位P
MOV
C,
P
MOV
TB8,
C
;校验位送到TB8
MOV
SBUF,
A
;发送数据,以及P
上述写法,是偶校验。奇校验,需要增加一条取反指令,如下:
MOV
C,
P
CPL
C
MOV
TB8,
C
;校验位送到TB8