C语言初阶操作符学习笔记

1.算术操作符

算术操作符包括加+,减-,乘*,除/,取模%。
针对这几种操作符,加减乘和数学里的算术规则一致,除法在浮点数计算时,需要注意一下。例如:

int main()
{
   
	float c = 3.14f;
	float a = 3 / 5;
	float b = 3.0f / 5;
	printf("%f %f %f", a, b, c);
	return 0;
}

以上代码,我们先从第一行分析,由于c是单精度浮点型变量,当我们初始化时,不能单单只给数字3.14,因为小数是默认为双精度浮点数的,因此我们需要在小数后面加上f,代表浮点数3.14为单精度浮点数;接着分析第二行和第三行,这两行区别在于3和3.0f,在运行上有如下区别:
在这里插入图片描述
可以发现,当除号两边都为整数时,求得的也会是个整数,然后以浮点数形式打印出来,因此得出结论,当初始化浮点数变量时,在除号两端至少要有一个是浮点数形式的数字,且单精度浮点数数字后要加f
除法说完,说一下取模。取模也叫取余,就是取余数,例如:5%3=2,意思为5对3取余数等于2,这里需要注意的是取模两端必须为整数

2.移位操作符

移位操作符分为<<(左移操作符),>>(右移操作符)。
左移操作符:左移操作符的移动规则是高位抛弃,低位补0。因为是移位操作符,所以需要搞清楚移的是什么位。这里可以说明移动的是二进制位。而整数的二进制表示形式有三种,原码/反码/补码。正整数的原码,反码,补码相同,负数的原码是直接写出的二进制表示形式,反码是符号位(最高位)不变其他位按位取反,补码为反码加1;计算机内存里存放的是整数的二进制补码,因此移位操作符作用对象也是补码。举个例子:
正数:
//15
//00000000000000000000000000001111–>原码,反码,补码
负数:
//-1
//10000000000000000000000000000001–>原码
//11111111111111111111111111111110–>反码
//11111111111111111111111111111111–>补码
那么15左移一位意为将15的二进制补码整体左移一位,高位抛弃,低位补0,得到//00000000000000000000000000011110,化为十进制为30,在测试了几组数据之后可以发现左移一位就是给数字乘2
右移操作符:右移操作符分为两种,逻辑右移和算术右移,这两种方式的区别在于:算术右移规则是低位抛弃,高位补符号位;逻辑右移的规则是低位抛弃,高位补0;而目前大多数情况都采用的是算术右移,具体的移动形式和左移类似。
这里需要说明的是,移位操作符移动的位数必须是整数,且不为负数

3.位操作符

位操作符分为三种,&(按位与),|(按位或),^(按位异或),这里的位操作符同样是对二进制补码进行操作的。
&(按位与),举例来说吧:
//15
//00000000000000000000000000001111
//10
//00000000000000000000000000001010
//15&10
//00000000000000000000000000001010
通过例子得出:按位与是将两个数的二进制补码按位对比,同为1,则得1,其他都为0
|(按位或),同样的例子:
//15
//00000000000000000000000000001111
//10
//00000000000000000000000000001010
//15|10
//000

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值