C#学习第六天

操作符

一、算术操作符:+ - * / %

1、特殊的除法

int a = 9/2;

此处得出的数为4,并不是因为是整形才计算为4

是因为,在c语言中,涉及小数计算,需要将计算的值修改为浮点型(小数)

才可以得出小数

如:float  a= 9/2;

此处仍为4

故上述所说,若要求出小数点后的

需如:float  a= 9 / 2.0 ;

才可以得出4.5

2、特殊的取模:

int a = 9 % 2;

a = 1

可以理解为,取模实际上就是 取余数!

二、移位操作符: <<    >>      //左移  右移

例: 

int a = 2 ;

int b = a << 1;

此处为二进值移位,则,2在2进制中表示的是

00000000000000000000000000000010

而移位左后就是

00000000000000000000000000000100

变成了4

三、位操作符: &   按位与   |按位或   ^ 按位异或

四、赋值操作符: =   +=   -=  *=  /=  &=  ^=  |=  >>=   <<=

例:a = a+5;

可通    a +=  5;这个上述的赋值操作符都可以如此表达;

五、单目操作符 :  ! 逻辑反操作    -负数    +正数   &取地址   sizeof 操作数的类型长度

~对一个数的二进制按位取反   --前置/后置减减     ++前置/后置加加   *间接访问操作符

解: a+b;   此处 + 是双目操作符

则 :单目操作符就是i只有一个数运算的操作符

!逻辑取反 例:

int a = 0;

printf("%d\n",!a);

此处要理解的是,在c语言中 1 为真,0为假,此处现在 a表示0,

而现在!a表示逻辑取反,要变成假的,这个时候这里就变成0;

sizeof   例

int arr[10]={0}

int sz = sizeof(arr)  /  sizeof(arr[0]);

此处计算的是数组的元素个数

~按位取反

int a = 0;

printf("%d",~a);

此处按位取反涉及到二进制储存方式

整数在内存中存储的是补码

原码反码补码只针对负数

一个整数的二进制表示有三种,以上述a为例

原码        10000000000000000000000000000001

反码        1111111111111111111111111111111111110

补码        1111111111111111111111111111111111111

得出以下结果是因为

按位取反是对内存里直接操作的,所以原来0的原码因该是

00000000000000000000000000000000

但是储存里面存的是补码是

1111111111111111111111111111111111111

而此时又需要计算出反码,反码是补码-1

得出

1111111111111111111111111111111111110

反码取反对最高位不参与运算,则变成

100000000000000000000000000000001

此处特别注意按位取反对符号位有效,但是原码/补码/反码不涉及最高位的正负位的计算,就是说,原码补码反码不涉及最高位的正负的改变

补码  =   反码    +     1

反码   =   补码   -     1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值