week2-day1
文章目录
一、数据的存储
1.1
- 字符:
字符是按ASCii码:一个整数对应一个字符,所以按整数的方式存储
- 整型:
有符号的整数:最高位为符号位,剩下的为数据位,-231~231-1
无符号的整数:0~232-1
整数是以补码的形式存储
原码:直接以二进制形式表示出的数:10:0b1010:1010、
正数10==00000000000000000000000000000001010==0x0000000A
负数:10==(0b)10000000000000000000000000001010==0x8000000A
反码:直接对原码取反,除符号位
补码:反码+1
负数补码:除符号位,反码+1
(short)-100原:1000000001100100
(short)-100反:1111111110011011
(short)-100补:1111111110011111
正数补码和原码相同
(short)100原:0000000001100100
(short)100反:0111111110011011
(short)100补:0000000001100100
负数补码转原码:取反+1
- 浮点型:?
参考
小数部分:乘2取整
浮点数存储分为数据部分和指数部分
数据部分:整数部分、正负一样,小数部分乘以2取整,得到对应二进制编码
指数部分:小数点向后移动,直到全整。按整数表示(补码)
123.874 二进制:1111011.110111
二、标准输入输出
#include<stdio.h>
2.1 输出
printf()
使用的格式不多说
printf格式控制符:
控制符 | 说明 |
---|---|
%d | 十进制整型数据 |
%ld | 长整型数据 |
%o | 八进制整数 |
%x | 十六进制整数 |
%md | m 指定的输出字段的宽度, 不足则左端补空格(格式修饰) |
%u | 无符号整型,最好不要写成%d |
%f | 单精度和双精度,小数部分6位, 超过6位的四舍五入 |
%n.mf | 输出实数时整数 n 位 小数 m 位(格式修饰) |
%c | 一个字符 |
%s | 用来输出字符串。 (也可以格式修饰) |
格式修饰 | 作用 |
---|---|
- | 左对齐 |
+ | 标识正数的正号 |
# | 8、16进制数的前缀 |
%x、%X、%#x、%#X 的区别:2f、2F、0x2f、0X2F
%%:%本身
可以用整数形式输出一个字符的ASCii码
2.2 输入
scanf()
使用格式:scanf ( " 格式控制串 " , 地址表 )
注意格式控制与内容类型一致
scanf()的多个输入
scanf( " %d%d%d%d " ,&a,&b,&c,&d )
接收的是地址!!!
输入的时候用空格隔开,或回车输n次或回车+空格
注意:输入字符时,空格会占位
在使用scanf输入完成时,通常以空格回车来表示输入结束
想以某格式输入,要使格式控制串与实际输入匹配(字符、字符串时注意)
例如:想输入:a b c d:scanf("%c %c %c %c",a,b,c,d)
且无论输入时多加空格,只会读一个
**注意:*在调用多个scanf()输入字符时,上一次的回车会被录入,造成下一次出问题,所以使用抑制符 或固定一个回车的格式\n
输入格式修饰:*:抑制符,指定输入值不用变量接收
规定有空格但不输入空格?
练习
交换两数然后输出
#include<stdio.h>
int main(){
int a,b;
int c=0;
scanf("%d %d",&a,&b);
printf("a=%d,b=%d\n",a,b);
c=a;
a=b;
b=c;
printf("replaced!\n");
printf("a=%d,b=%d\n",a,b);
return 0;
}
三、运算符
3.1 算数运算符
+、-、*、/、%,不多说
**注意:**除数与被除数都是整数时,结果也为整除后结果
赋值运算符:=、+=、-=、*=、/=、++、–
++a和a++:++a先执行自增,再执行其他的运算;a++:先执行其他的运算,再进行自增
例如:a=1,b=1
b=++a、b=a++
前者b==2,a==2
后者b==1,a==2
3.2 比较运算符
<、>、==、<=、>=、!=,不多说。结果为0或1
3.3 逻辑运算符
&&与、||或、!非,不多说
3.4 位运算符(补码)
正数补码和原码相同
负数补码转原码:取反+1
&:位与,都为1时为1
|:位或, 都为0时为0
~:按位取反
^:异或,不同为1,相同为0
<<、>>左移、右移,指定位数移动,不移动符号位,
右移缺位补数时按符号位补(高位补:正数补0,负数补1),左移缺位补数时补0
3.5 三目运算符
条件?成立执行:不成立执行
a>b ? printf(“a大=%d”,a) : printf(“b大=%d”,b)
3.6 特殊运算符
sizeof(数据/数据类型)
作业
- 输入三个数,输出其中最大数
- 交换两个整数,不使用第三个变量的情况下交换值。参考
- 输入一个四位数,输出每个位
- 输⼊⼀个整数a,如果小于10,则a * 10,否则a / 10,得到计算结果,输出