cup:中央处理器
存储器:内存(ram.rom.cache高速缓冲存储器)---用于存放当前处于活动状态的程序和数据,即微机运行所需要的程序和数据,它与cpu之间进行频繁的交换数据.
外存:用户可用于长期保存程序/数据和文件,有用户管理外存中的shuju
上午:进制转换,位运算,存储数据
进制就是进位制,对于任何一种进制,———X进制,就表示某一位置上的数运算时,逢X进一位,十六进制就是逢十六进一,二进制就是逢二进一.A~F(10~15),计算机经常用到的是二进制和十六进制.(二进制的位权就是以2为底的幂--二进制数据也是采用位置计数法,其位权是以2为底的幂。例如二进制数据110.11,其权的大小顺序为2^2、2^1、2^0、2^-1、2^-2。对于有n位整数,m位小数的二进制数据用加权系数展开式表示,可写为:
(a(n-1)a(n-2)…a(-m))2=a(n-1)×2^(n-1)+a(n-2)×2^(n-2)+……+a(1)×2^1+a(0)×2^0+a(-1)×2^(-1)+a(-2)×2^(-2)+……+a(-m)×2^(-m)
二进制数据一般可写为:(a(n-1)a(n-2)…a(1)a(0).a(-1)a(-2)…a(-m))2)
(a(n-1)a(n-2)…a(-m))2=a(n-1)×2^(n-1)+a(n-2)×2^(n-2)+……+a(1)×2^1+a(0)×2^0+a(-1)×2^(-1)+a(-2)×2^(-2)+……+a(-m)×2^(-m)
二进制数据一般可写为:(a(n-1)a(n-2)…a(1)a(0).a(-1)a(-2)…a(-m))2)
进制转换:
秘诀连除倒取余
777/2=388–1
388/2=194–0
194/2=97–0
97/2=48–1
48/2=24–0
24/2=12–0
12/2=6–0
6/2=3–0
3/2=1–1
1/2=0–1 1100001001
10进制转其他,小数乘以位权(比如二进制就是2)取整(正取)6或者8位,舍弃末尾,整数部分除以位权(2)取余(倒取余)
N进制转十进制:(二进制转十进制,二进制转十六进制)
秘诀:当前位上的数乘以计数的位数减1次方,(位数*位权的n-1次方)
二:位运算(A10B11C12——)
参与运算的量按二进制位进行计算
按位&(同时为真才为真—计算机中的清零 )/
按位|(只要有一位为真)/
按位~/
按位异或^/
左移<<(左移一位相当于乘2),末尾以0补齐,高位的被丢弃
右移>>(右移一位相当于除2);高位以0补齐,低位丢弃
//右移运算对于负数,分为逻辑右移(高位补0),和算术右移——计算机常用-(高位补1)
int a=3;
int number6=a<<2;//左移两位
printf("118左移两位的结果为:%d\n",number6);
int number7=-3>>2;//左移两位
printf("3左移两位的结果为:%d\n",number7);
int a=3;
int number6=a<<2;//左移两位
printf("118左移两位的结果为:%d\n",number6);
int number7=-3>>2;//左移两位
printf("3左移两位的结果为:%d\n",number7);
118左移两位的结果为:12
3左移两位的结果为:-1
3左移两位的结果为:-1
一个字节(byte)表示8个二进制位(bit);网速500K/s====500*1024byte;
最高位为符号位(最左边)
负数以补码形式在计算机中表示:负数的补码形式:(负数:除了符号,其他按位取反,再加1)
正数的源码和补码是相同的
-3右移动2位
源码:1000 0011
反码:1111 1100
+1变补码:1111 1101
右移动两位:11111111
取反:100000
加1:100001
输出结果为-1
托字符^(按位异或)相同为0,异或为1
三:查看数据在内存中的存储
从低到高存取,从高到低分配存.
zuoye:
/*1.比较并输出三个数的最大值,最小值.以及中间值.
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
if (a<b) {
int temp=a;
a=b;
b=temp;
}
if (b<c) {
int temp=b;
b=c;
c=temp;
}
if (a<b) {
int temp=a;
a=b;
b=temp;
}
printf("最大值%d\n最小值%d\n中间值%d\n",a,c,b);
/*2.输入3个数,判断是否能构成三角形。
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
if (a+b>c&&b+c>a&&a+c>b) {
printf("可以构成三角形\n");
}
else printf("不可以构成三角形\n");
/*3.铁路托运行李规定:行李重不超过50公斤的,托运费按0.15元每公斤计算,如果超过50公斤,超出部分每公斤加收0.1元。编程实现上述功能。
float weight=0;
float cost=0;
scanf("%f",&weight);
if (weight<=50) {
cost=weight*0.15;
}
else cost=50*0.15+(weight-50)*(0.15+0.1);
printf("%.2f\n",cost);
/*4.有一个函数:x<1的时候,y
= x;1<=x<10的时候,y=2x-1;x>=10的时候,y=3x-11。写一段程序,输入x,输出y值。
*/
*/
int x=0;
int y=0;
scanf("%d",&x);
if (x<1) {
y=x;
}
else if (x>=10)
{
y=3*x-11;
}
else y=2*x-1;
printf("%d\n",y);5.编制一个完成两个数四则运算程序。如:用户输入34+56则输出结果为90.00,要求运算结果保留2位有效小数,用户输入时将2个运算数以及运算符都输入,根据运算符求结果。
float a=0,b=0;
char c;
scanf("%f%c%f",&a,&c,&b);
switch (c) {
case '+':
printf("a+b=%.2f\n",a+b);
break;
case '-':
printf("a-b=%.2f\n",a-b);
break;
case '*':
printf("a*b=%.2f\n",a*b);
break;
case '/':
printf("a/b=%.2f\n",a/b);
break;
default:
printf("输入错误\n");
break;
}
/*6.编写一个程序,输入某人的身高(cm)和体重(kg),按下式确定其体重是否为标准、过胖或过瘦。(1)标准体重=身高-110;(2)超过标准体重5kg(即大于5kg)为过胖;(3)低于标准体重5kg(即小于5kg)为过瘦
男性成人时身高 = (faHeight + moHeight) * 0.54(cm)
女性成人时身高 = (faHeight * 0.923 + moHeight) / 2(cm)
此外,如果喜爱体育锻炼,那么可增加身高2%,如果有良好的卫生饮食习惯,那么可增加身高1.5%。
程序要求:父亲的身高与母亲的身高、小孩的性别、是否喜爱体育锻炼和是否有良好的卫生饮食习惯也从键盘上输入,最终输出预测的身高。
提示:小孩性别的输入方式,可在屏幕给出提示“请输入小孩的性别(男孩输入M,女孩输入F):”,然后通过if语句来判断从键盘输入的字符是M还是F。是否喜爱体育锻炼也可以通过类似的方式实现。
float hight=0;
float weight=0;
scanf("%f%f",&hight,&weight);
if (hight-110-weight<-5) {
printf("过胖\n");
}
else if(hight-110-weight>5)
{
printf("过瘦\n");
}
else printf("标准\n");
男性成人时身高 = (faHeight + moHeight) * 0.54(cm)
女性成人时身高 = (faHeight * 0.923 + moHeight) / 2(cm)
此外,如果喜爱体育锻炼,那么可增加身高2%,如果有良好的卫生饮食习惯,那么可增加身高1.5%。
程序要求:父亲的身高与母亲的身高、小孩的性别、是否喜爱体育锻炼和是否有良好的卫生饮食习惯也从键盘上输入,最终输出预测的身高。
提示:小孩性别的输入方式,可在屏幕给出提示“请输入小孩的性别(男孩输入M,女孩输入F):”,然后通过if语句来判断从键盘输入的字符是M还是F。是否喜爱体育锻炼也可以通过类似的方式实现。
float faHeight=0,moHeight=0;
char sex=0;
char sports=0;
char habit=0;
float tagetHeight=0;
printf("请输入父亲的身高:");
scanf("%f",&faHeight);
printf("请输入母亲的身高:");
scanf("%f",&moHeight);
getchar();
printf("请输入性别(M男;F女):");
scanf("%c",&sex);
getchar();
printf("请输入是否喜欢体育锻炼(Y喜欢;N不喜欢):");
scanf("%c",&sports);
getchar();
printf("请输入是否有良好饮食习惯(Y是;N否):");
scanf("%c",&habit);
if (sex=='M') {
tagetHeight=(faHeight + moHeight) * 0.54;
}
else tagetHeight=(faHeight * 0.923 + moHeight) / 2;
if (sports=='Y') {
tagetHeight*=(1+0.02);
}
if (habit=='Y') {
tagetHeight*=(1+0.015);
}
printf("小孩的身高位%fcm\n",tagetHeight);
2156

被折叠的 条评论
为什么被折叠?



