c语言-操作符详解
1. 算数操作符
+
-
*
/
%
- 除了
%
之外其他算数操作符,整数与浮点数都可使用 %
两端必须为整数,返回整除之后的余数- 如果
/
两边都为整数,那么相除之后只保留整数部分 - 如果
/
两边至少一个浮点数,那么相除之后将继续保留小数位
2. 移位操作符
左移操作符 <<
右移操作符 >>
/注:移位操作符左右必须为`整数`*/
example:
int n1 = 7;
int n2 = 2;
n2 = n1 << 1;//n2=14
2.1. 左移操作符
- 在内存中将二进制数向左移动
即 乘2
,超出部分左边舍去
,右边补0
2.2. 右移操作符
-
二进制数 向 右移动
即 除2
2.2.1. 算数移位
左边根据符号位 补1-负、0-正,右边舍去
2.2.2. 逻辑移位
不管正负直接 补0,右边舍去
-
具体是采用算数移位,还是逻辑移位都是由编译器来觉得的
2.3. 要聊到移位操作符,那就不得不聊一聊整数在内存中是如何存储的了
- 要知道计算机是以二进制存储数据的,而
整数有3种二进制表示形式
- 分别为:
原码
反码
补码
- 而整数是采用
补码
的方式在内存种存储的 - 其中
正数
的原码、反码、补码
相同,而负数
的则不相同是需要计算的
- 分别为:
- 何为
原码
?、何为反码
?、何为补码
?原码
:即原本整数的二进制形式,其中第1位为符号位
,1-负数、0-正数
反码
:即原码除符号位之外所有元素1变为0,0变为1补码
:反码加1即为补码