Notes from day seven

今天上第七天的课,先更新第七天的。嘿嘿嘿!

(操作符)

1.算数操作符

在C语言中也包含加减乘除的运算,在C语言中分别用符号+  —  *  / 来 表示加减乘除,用%来表示对整数取余,加减乘除无类型要求,取余运算符要求操作数必须是整数,返回值为整除之后的余数。

2.移位操作符

移位,顾名思义就是移动位置,在电脑中数据以二进制补码的形式在内存中进行保存,所以移动的是二进制。

正整数的原码,补码,和反码相同在使用时比较方便。

负整数的原码,补码,反码与正整数不同,

例如:10000000 00000000 00000000 00001010这串数字就代表负10分原码,最左边的1就表示它是一个负数也就是它的符号位(0代表整数,1代表负数),求反码需要利用原码,保持原码的符号位不变其他位数取反,0变1,1变0。则负10的反码为11111111 11111111 11111111 11110101

而要求补码就要在反码的基础上加一,则负10的补码为:

11111111 11111111 11111111 11110110。

利用补码可以推出反码,在接着推出原码,就可以确认这个数的十进制。

(2.1)左移操作符

移位规则:左边抛弃 右边补零

左移操作符 <<

int main() {
int a = 10;
int b = a << 1;
printf("%d\n", b);
int x = -10;
int y = x << 1;
printf("%d", y);
return 0;
}2a6cea58dc7f40d1a0b8914d805daa90.jpg

 可以看到,左移之后原本的数字由10变为了20由负10变成了负20

我们找出10的原码来分析

00000000 00000000 00000000 00001010

按照移位规则左边抛弃,右边补零则原码变为

0000000 00000000 00000000 000010100

将二进制转化为十进制则数字为:20

观察发现向左移一位相当于给整体乘以2,那由此可以得出:

在移位时向左移位几次就相当于乘以2的几次方。

(2.2)右移操作符

规则:右边删除 左边补符号位。正整数的符号位数字为0,负数的符号位数字为1

右移操作符 >>

#include<stdio.h>

int main() {

int a = 10;

int b = a >> 1;

printf("%d\n", b);

int x = -10;

int y = x >> 1;

printf("%d", y);

return 0;

}

 

8214bb32989c424299b773d54286bc6f.jpg

我们发现向右移动之后数字10变成了5,数字负10变成了负5,也就是说向右移动会缩小数字,向右移动一次缩小一倍,向右移动几次除以2的几次方。

在这里一定要搞清楚原码,反码,补码之间的换算。

注意:对于移位运算符,不要移动负数位,这个是标准未定义的。

3.位操作符

& 按位与

| 按位或

^ 按位异或

#include <stdio.h>
int main() {
int num1 = 3;
int num2 = 5;
int result1 = num1 & num2;
printf("num1 & num2 = %d\n",result1);
int result2 = num1 | num2;
printf("num1 | num2 = %d\n", result2);
int result3 = num1 ^ num2;
printf("num1 ^ num2 = %d\n", result3);
}e9c5dbd8cdbd466f8bc4f9880f750561.jpg

 我们会发现利用三个位操作符打印出来的数字与先前输入的数字没有直接关系。

规律:在二进制中3表示为00000011

5表示为00000101

按位与&:表示将两者同一位置的数字进行比较,如果都为真则计为真,其他情况都为假。然后将结果转化为十进制打印出来。0001为比较结果十进制为1。

同理按位或表示只要两者中有一者为真就为真,两者同时为假才为假。

按位异或是,相同的为假,不同的为真。

4.赋值操作符

在C语言中=表示赋值

赋值操作符可以让你对自己声明的变量重新赋值。

int weight = 80;  体重

重新赋值

weight=58;

double salary = 10000;// 薪水

salary=25000; 使用赋值操作符重新赋值

还有混合赋值操作符 +=    -=    *=    /=

复合赋值运算符“+=”,表示的意思是先将运算符左边操作数指向的变量值和右边的操作数执行相加操作,然后再将相加的结果赋值给左边的操作数指向的变量。例如下面语句:
int a = 10;
a += 20; => a = a + 20
此时,变量a等于30,其过程是变量a先与数值20相加,因为变量a的值是10,因此与数值20相加的结果是30,再将30赋值给变量a,此时变量a的值为30。
复合赋值运算符“-=”,表示的意思是先将运算符左边操作数指向的变量值和右边的操作数执行相减操作,然后再将相减的结果赋值给左边的操作数指向的变量。例如下面语句:
int a = 20;
a -= 18;=>a = a - 18。

*=  和  /=同理。


5.单目操作符

单目 运算符 是指运算所需变量为一个的运算符,即在运算当中只有一个操作数,又叫一元运算符,其中有逻辑非运算符:!、按位取反运算符:~、自增自减运算符:++, --等。 运算所需变量为两个的运算符叫做双目运算符,或者要求运算对象的个数是2的运算符称为双目运算符。

运算符列举:!逻辑非运算符  ++  a++ 相当于a=a+1  -   a--相当于a=a-1。

好啦😄,笔记就分享到这啦!

再见!!!

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值