操作符详解1

1.操作符分类

2.算数操作符 

 除法操作符:

 

除数不能为0: 

 取模操作符:

 

 取模操作符的两边(两个操作数)必须是整数

如果想得到一个数的某一位,可以通过模和除来实现

 3.移位操作符

移动的是二进制

 

  如何求原码

一个数的每一位都有其权重,3的权重为10^0,所表示的值为3*10^0,2的权重为10^1,表示的值为2*10^1,1的权重为10^3,表示的值为1*10^3,加起来则为该数的十进制数

二进制同理

 若要将10进制数变成2进制数(或者其他进制数),则一个字“

则利用2的不同次方凑和,和为十进制数,通过次方数找到对应的2进制位数

如何表示出原码:

 第一位是符号位,总位数为32bit位(二进制位),即一个整型(4个字节)。

正数的原码,反码,补码相同

 负数的反码是在原码的基础上符号位(第一位)不变,其他位按位取反;补码等于反码+1;

符号位由正负决定,不会随取补取反改变

 如何实现移位操作

 算数右移:

将a转换为2进制数,并求出补码,再计算:整体右移,将右边多出部分丢弃,左边空缺用原来的符号位填补。

 

 

 这里对a的引用不影响a原本的值

左移操作符(无算数左移):原理相同,对补码进行操作,左边丢弃,右边补0。

 注意:不能进行负移位

4.位操作符(同样操作二进制位)

按位 &(与)操作

 同样对补码进行操作,对应二进制位           有0则为0,      同时为1才为1

 正数,补码与原码相同,答案为1*2^0+1*2^1等于3

按位  |(或)操作

同样对补码进行操作,对应的二进制位         有1则为1,       同时为0才为0

 补码结果为复数,先减1,再取反得到原码。

按位 ^(异或)操作

对补码进行操作,对应的二进制位                相同为0,相异为1

 补码为负,先减1,再取反得到原码

问:不能创建临时变量(第三个变量),实现两个整数的交换

终极解法:

异或运算的运算法则:

a^a -> 0
a^0 = a
异或是支持交换律的

 

 例:实现求一个整数储存在内存中的二进制中的1的个数

思路:

用a&1来判断最低位是否为1(按位&有0则为0,全为1才为1),判断一次,将a右移一次,再判断,判断为1计数器就+1.

5.赋值操作符

 连续赋值:(不便于观察和调试)

 将y+1的结果赋给x,再将x的值付给a

(更推荐的写法)

复合赋值符

用法:

6单目操作符

6.1介绍

!的使用

同一个意思

flag为假,!flag为真,则打印

如果想表达flag为真,打印

 单目操作符只有一个操作数,而双目操作符有两个操作数

 &和 * 操作符应用于指针

 sizeof

 用法

 在数组中的用法

 ~ :对二进制位按位取反

应用:如果想改变某一位

几种继续的方式

 

 

 后置++

 后置--

前置++

 前置--

强制类型转化(一般情况下不建议使用)

例:

 arr[10]是整型数组,大小为4*元素个数。

char[10]是字符数组,大小为元素个数。

test(arr),test(ch)这样的传参传递的是指针变量(数组首元素arr[0]/ch[0]的地址),sizeof(arr),sizeof(char)都是指针变量的大小,为4/8个字节,对应32/64个bit位。

数组名只有在sizeof和&后面表示整个数组,其他时候都表示首元素地址。

无论什么类型的指针变量大小都是相同的。

7.关系操作符

 8.逻辑操作符

&&   并且

 | |    或者

 例:

 &&两边都为真(不为0),结果为1

 左边不为真(0),则依次判断右边

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值