C语言数据类型、变量的输入和输出进制转换

1.scanf标准函数可以从键盘得到数字并记录到存储区里。
为了使用这个标准函数需要包含stdio.h头文件
在scanf函数调用语句里应该使用存储区的地址表示存储区。例子:scanf("%d",&num);
双引号里使用占位符表示存储区的类型。
在scanf函数调用里语句尽量不要写不是占位符的内容。

2.如果用户输入的格式和程序要求的格式不同,那么程序就无法获得数字。
可以在一条scanf函数调用语句里获得多个数字。例子:scanf("%d%d",&num,&num1);


3.一个字节可以分成八段,每段可以用来记录一个0或者1
要想把一个数字记录到一个字节里就必须首先拆分成八个0或者1
用一组0或者1表示数字的方法叫二进制
任何一个数字即可以用十进制方式表示,也可以用二进制方式表示。
4.计算机里只能用二进制的方式保存数字。
二进制数字每个位置有一个编号,最右边位置的编号是0,向左依次递增。
二进制数字中每个数位里的1单独代表一个数字,这个数字就是2的数位编号次方。
二进制数字中如果两个相邻数位的内容一样则左边数位的内容是右边数位内容的2倍。
二进制表示的非负数符合以上规则。
二进制数字加一的时候应该把编号为0位置开始的连续多个1都变成0,把最右边的0变成1
任何二进制数除以2并保留整数部分的结果相当于去掉最右边二进制数位的内容。
二进制表示的非负数转换成十进制的时候只需要把每个数位的内容单独转换然后把转换的结果求和。

例子:

0000 0011 = 2的1次方 + 2的0次方
          = 2 + 1
          = 3
0101 1100 = 2的6次方 + 2的4次方 + 2的3次方 + 2的2次方
          = 64 + 16 + 8 + 4
          = 92

5.十进制表示的非负数转换成二进制的方法:

12        *******0
6         ******0
3         *****1
1         ****1
0         ****
转换结果是00001100

不停对原始数字进行除以2并保留整数部分的操作得到一组数字,用每个数字除以2取余得到一个数位的内容,把所有数位的内容从后面向前倒序书写就得到了转换的结果。

6.负数的二进制和十进制之间不能直接转换,必须借助相反数。

转换过程分三步,首先计算相反数,然后把相反数进行转换,最后再次计算相反数。

把二进制数字每个数位的内容变成相反数字然后再加一就得到相反数的二进制。

十进制负数转二进制负数例子:
-14
14
0000 1110
1111 0001 + 1 = 1111 0010(-14的二进制)

7.有符号类型的二进制数字中最左边的数位叫做符号位,它的内容可以用来判断数字是负数还是非负数。
符号位内容是0表示数字是非负数。符号位内容是1表示数字是负数。
二进制负数转十进制例子:
1100 1011
0011 0100
0011 0100 + 1 = 0011 0101
0011 0101 = 2的5次方 + 2的4次方 + 2的2次方 + 2的0次方
          = 32 + 16 + 4 + 1
          = 53
-53

8.把二进制数字的数位从右向左每三个分成一组。,每组用一个0-7之间的数字替换。这个替换结果叫做数字的八进制表示方式。

例子:
0110 1010
01 101 010
1   5   2
152(八进制)
可以在程序里直接使用八进制方式表示数字,这种数字必须以0做开头。
可以在printf函数调用语句里使用%o做占位符把数字的八进制表示方式显示在屏幕上。

9.把二进制的数位从右向左每四个数位分成一组,每组用一个字符替换(用a到f之间的字母替换10到15之间的数字)。这个替换结果叫做数字的十六进制表示方式。

例子:
1100 1011
12   13
c    b
cb(十六进制)

10.可以在程序里使用十六进制方式表示数字,这种数字必须以0x做开头。
可以在printf函数调用语句里使用%x或%X做占位符把数字显示在屏幕上。
用小写%x做占位符的时候数字里的所有字母都是小写的,用大写%X做占位符的时候数字里的所有字母都是大写的


11.操作符代表了对数字的计算规则。
根据操作符所需要配合的数字个数可以把操作符分为单目操作符、双目操作符和三目操作符。

12.C语言里使用+、-、*和/表示加减乘除四则运算。
如果参与除法计算的两个数字都是整数,则计算结果只保留整数部分。

13.C语言里用%表示取余操作

14.赋值操作符用=表示
这个操作符可以把一个数字记录到一个存储区里。
赋值语句可以当作数字使用,这个数字就是赋值完成后左边存储区里的数字。
可以在一条语句里使用多个赋值操作符,这个时候首先计算最右边的赋值操作符。

15.大多数双目操作符可以和赋值操作符合并成为复合赋值操作符,例如:+=、/=等。
复合赋值操作符也要求左边的内容可以代表存储区,右边的内容可以代表数字。
复合赋值操作符把双目操作符的计算结果记录到左边的存储区里。
复合赋值操作符的优先级和赋值操作符一样低。例子:5*=2+3;的结果为25,先计算2+3=5,再计算5*=5,最后结果为25

16.自增操作符(++)和自减操作符(--)都是单目操作符。
这两个操作符都必须和存储区配合使用,它们可以把存储区的内容加一或减一。
它们都有两种使用方法,一种是前操作(操作符写在存储区的前面),另一种是后操作(操作符写在存储区的后面)。

使用这两个操作符编写的表达式可以当作数字使用,前操作当作数字使用的时候是修改后的数字,后操作当作数字使用的时候是修改前的数字。
不要在一条语句里对同一个变量多次进行自增或自减计算。

17.逻辑操作符用来编写逻辑表达式。
逻辑表达式的结果只能是布尔值。

18.!是一个单目逻辑操作符,它用来计算一个布尔值的相反值。
这个操作符使用的时候应该写在一个布尔值的前面。

双目逻辑操作符包括 ==(等于),!=(不等于),>(大于),<(小于),>=(大于等于),<=(小于等于)

例子:3 < 7 < 5结果是1(真)
因为先计算 3 < 7 结果为1(真)
再计算 1 < 5 所以结果为1(真)

19.最多包含一个双目逻辑操作符的表达式叫简单逻辑表达式,这种逻辑表达式在数学里的结果和在C语言里的结果一定相同。

20.在C语言里编写逻辑表达式的时候如果逻辑表达式里包含多个双目逻辑操作符就必须拆分成多个简单逻辑表达式,然后再合并。

21.可以使用逻辑与(&&)和逻辑或(||)把两个逻辑表达式合并成一个。

如果两个逻辑表达式里有一个的结果是真,则用或(||)连接以后结果就是真。(逻辑或一真为真)
如果两个逻辑表达式里有一个的结果是假,则用与(&&)连接以后结果就是假。(逻辑与一假为假)
与(&&)和或(||)都具有短路特征(如果前一个逻辑表达式的结果可以决定合并后逻辑表达式的结果,就不会计算后一个表达式的结果了)。

猜你喜欢

转载自blog.csdn.net/weixin_44954230/article/details/127225032