操作符学习小结

1.二进制

1.二进制转十进制

十进制的每一位都有自己的权重。十进制的数字从右向左是个位,十位,百位······

每一位的权重分别是10^0,10^,10^2······

二进制怎么做也显而易见了。

2.十进制转二进制

短除法:

 

还可以用计算器(正常情况下谁闲的手算)

 

 3.二进制转八进制和十六进制

1*二进制转八进制

八进制的数字每一位最大是7,用二进制表示为111

因此,一个八进制数字的每一位是由三位二进制组成的

如:0:000    1:001    2:010    3:011    4:100    5:101    6:110    7:111

因此在2进制数转8进制数时,从2进制序列中右边低位开始向左每3个2进制位会换算一个8进位,剩余不够3个2进制位直接换算

 在使用printf函数时打印以“0”开头的数字,编译器会认为是8进制的数字再转化为十进制

即:以“0”为前缀的数字会被计算机当作八进制数

2*二进制转八进制

16禁止的数字每一位是0~9,a~f的数字,与上文相同,这些数字各自写成2进制,最多有4个二进制位就足够了。

因此,在2进制转116进制数时,从2进制序列中右边低位开始向左每4个2进制位会换算一个16进制位剩余不够4个2进制位的直接换算。

与八进制类似,以”0x“或”0X“为前缀的数字会被计算机当作十六进制数

#关于8进制与16进制还可以翻看《C PRIMER PLUS》的P40~P41

2.原码、反码、补码(这里不涉及小数(浮点数))

整数的2进制表示方法有三种,即···^······

三种表示方法均有符号位和数值位两部分,符号位均用0表示正,用1表示负,数值位最高的一位被当做是符号位,剩余的都是数值位。

正整数的“原反补”均相同

负数的则各不相同

原码:直接将数值按照正负数的形式翻译成的2进制位得到的就是原码;

反码:将原码的符号位不变,其他依次按位取反就可以得到反码;

补码:反码+1就得到补码。

#原码与补码的转换,均可以“符号位不变,按位取反再+1”

 对于整形来说:数据存放内中其实存放的是补码

1.用补码,可以将符号位和数值位统一处理;

2.同时,加法和减法也可以统一处理(CPU只有加法器)。此外,补码与原码互相转换,其运算过程是相同的,不需要额外的硬件电路。

例如:计算1-1=0

可以看成1+(-1)=0

先用原码计算,发现得到的结果是“-2”,显然不行。

用补码计算,得到的结果进1位,但int类型只能存储32位比特,因此进位得到的1被丢掉了,得到的结果正确

 

 3.移位操作符

<<    左移操作符

>>    右移操作符

注意:移位操作符的操作数只能是整数

1.左移操作符<<

移位规则:左边抛弃,右边补0

移位某个变量的值并不改变这个变量本身,如果将移位后得到的值赋给原来这个变量,它的值才会改变 

 4.位操作符:&、|、^

  #   ^指二进制位

&(按位与):对应的2进制位上有0则为0,两个同时为1才为1

 |(按位或):对应的2进制位上两个同时为0才为0,有1则为1

^(按位异或):对应的2进制位上相同则为0,相异则为1

tip:"^"是支持交换律的

 “~”——按位取反操作符:二进制位是0的变成1,是1的变成0(连符号位都算

5.逗号表达式

就是用逗号隔开的多个表达式

从左向右依次执行。最后一个表达式的结果作为整个表达式的结果

tip:在执行表达式的过程中可能会遇到结果为假(false)的表达式,但并不影响逗号表达式的结果的执行过程,也不影响最后一个表达式的结果作为逗号表达式的结果。

6.下标访问[]\函数调用()

1.下标引用操作符[]

[]的操作数:一个数组名+一个索引值(数组下标)

如果创建一个数组:int arr[10]

[]的操作数即为arr & 9.

2.函数调用操作符()

接受一个或多个操作数:第一个操作数是函数名剩余的操作数就是传递给函数的参数。

()至少要有一个操作数,即函数名。

e.g:int ret = Add(2,3)

*sizeof 是不是函数呢?——不是函数。是操作符

 

7.操作符的属性:优先级、结合性

这两个属性决定了表达式求值的计算顺序

8.表达式求值

表达式求值之前要进行类型转换当表达式中的值转换到适当的类型,才开始计算

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值