C语言基础 3 二进制 操作符

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

0110 1010    01 101 010  152(八进制)

可以在程序中直接使用八进制方式表示数字,这个时候必须用0做开头
可以采用%o作为占位符把数字的八进制表示方式显示在屏幕上

把二进制的所有数位从右向左每四个数位分成一组,每组用一个字符替代。这个替代结果叫做数字的十六进制表示方式。

用a到f之间的字母替换10到15的数字


1100 1011       cb(十六进制)

可以在程序中使用十六进制方式表示数字,这个时候数字必须以0x做开头可以使用%x或%X做占位符把数字的十六进制表示方式显示在屏幕上显示结果里不包含0x开头


用%x做占位符的时候显示结果里所有字母都是小写的
用%X做占位符的时候显示结果里所有字母都是大写的

C语言里用操作符表示对数字的处理规则
根据操作符所需要配合的数字个数不同把操作符分成单目操作符,双目操作符和三目操作符

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

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

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

绝大多数双目操作符可以和赋值操作符合并成为复合赋值操作符,例如+=,*=
复合赋值操作符要求左边是一个存储区,右边是一个数字
复合赋值操作符可以把双目操作符的计算结果记录到左边的存储区里
复合赋值操作符的优先级和赋值操作符的优先级一样低

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


自增,自减表达式可以当作数字使用,前操作当数字使用的时候是修改后的数字,后操作当数字使用的时候是修改前的数字


不要在一条语句里对同一个变量多次进行自增或自减计算,结果可能不确定

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

!是一个单目逻辑操作符,它可以计算一个布尔值的相反值(真变假,假变真)
这个操作符使用的时候应该写在一个布尔值的前面

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

最多包含一个双目逻辑操作符的表达式叫做简单逻辑表达式

简单逻辑表达式在数学里的结果和在计算机里的结果是一样的


C语言程序里如果一个逻辑表达式中包含不止一个双目逻辑操作符就必须拆分成多个简单逻辑表达式然后再合并

可以使用与(&&)和或(||)这两个双目逻辑操作符把两个逻辑表达式合并成一个

如果两个逻辑表达式中有一个的结果是假则用与(&&)合并后的逻辑表达式结果也是假
如果两个逻辑表达式中有一个的结果是真则用或(||)合并后的逻辑表达式结果也是真

与(&&)和或(||)都具有短路特征(如果前一个逻辑表达式的结果可以决定整个逻辑表达式的结果则后一个逻辑表达式不计算)

位操作符可以直接操作二进制数位

~是一个单目位操作符,它可以根据一个数字计算出另外一个数字,这两个数字在所有二进制数位上的内容都不一样
这个计算规则叫按位求反,这个符号使用的时候要写在一个数字的前面

双目位操作符包括按位与(&),按位或(|)和按位异或(^)
它们可以把两个数字对应数位里的内容做计算

按位与(&)可以把对应数位上的数字做与计算
只要有一个数位里的内容是0则与计算以后结果就是0

       3         0000 0011
&    5         0000 0101
                 0000 0001

按位或(|)可以把两个数字对应数位里的内容做或计算
只要有一个数位里的内容是1则或计算以后的结果就是1

    3          0000 0011
|   5          0000 0101
               0000 0111

按位异或(^)可以把两个数字对应数位的内容做异或计算
如果两个数位的内容一样则异或计算的结果是0,否则结果是1

     3         0000 0011
^   5         0000 0101
                0000 0110

移位操作可以把一个数字里的所有二进制 数位统一向左或向右移动n个位置
>>表示向右移位操作
<<表示向左移位操作
它们都是双目位操作符,符号左边的数字是将要进行移位操作的数字,符号右边的数字是将要移动的位数
移位操作相当于把每个数位里的数字换一个数位来放

向左移位时右边空出来的位置上一定补充0,无符号数据右移的时候左边空出来的位置上一定补充0,有符号数据右移的时候,左边空出来的位置上一定补充符号位

一般情况下向左移动n位相当于乘以2的n次方,向右移动n位相当于除以2的n次方

所有位操作符不会修改存储区内容,它们只是能计算出一个新数字

&也可以作为单目操作符使用,这个时候它可以计算一个存储区的地址
使用的时候要把这个符号放在一个存储区的前面
可以使用%p做占位符把地址数据显示在屏幕上
在我们的计算机上所有地址数据都由32个二进制数位构成

*也可以作为单目操作符使用,这个时候它可以根据一个地址找到它所对应的存储区,使用的时候要把这个符号写在一个地址数据前面

三目操作符可以从两组计算规则里选择一个
三目操作符格式如下
布尔值 ? 公式一 : 公式二
以上格式表示如果布尔值是真就采用公式一计算,否则采用公式二计算
不要在三目表达式的问号后使用赋值操作符


你可能感兴趣的:(c语言基础)