c 移位运算符,c语言的位移运算符
Yyds干货库存
大家好,我是李泽。希望看完之后能帮到你。如有不足请指正!一起学习交流。
2021博客之星物联网与嵌入式开发TOP5~2021博客之星Top100~ ~阿里云专家博主明星博主~掘金InfoQ ~ P Creator ~周榜92(总榜886) 35w全网访问量
本文原载于P,作者Yuze。如需转载请告知。
个人主页51Ctop P博客
欢迎喜欢你喜欢的留言。
系列专栏51Ctop _ 博客的分类
我们不在自己选择的舞台上,表演也不是自己选择的剧本。
算术加法运算符(“”)也叫双目运算符,即应该有两个变量参与运算,有正确的组合。描述:添加两个操作数。#包含stdio.h
int main(void){
printf(阿拉伯数字=%d ,1 1);
返回0;
}
Run:阿拉伯数字=2
减法算子(-)也叫双目算子,但-也可以是负算子,这种情况下就是单目算子。描述:从第一个操作数中减去第二个操作数。#包含stdio.h
int main(void){
printf(阿拉伯数字=%d ,1-1);
返回0;
}
Run:阿拉伯数字=0
乘法运算符( * ),又称双目运算符,有左合取。描述:将两个操作数相乘。#包含stdio.h
int main(void){
printf(阿拉伯数字=%d\n ,2 * 2);
返回0;
}
注意:在数学中,乘法(x)在我们的编程中是星号(*)。
Run:阿拉伯数字=4
除法运算符(/),也称为双目运算符,具有左连词。当所有涉及的运算都是整数时,结果也是整数,小数去掉。如果其中一个操作数是实数,则结果是双精度实数。描述:分子除以分母。注意:数学中用的是除法(),但我们编程中用的是斜线(/)。
用下面的代码演示:除法演示。
#定义
#包含stdio.h
int main(void){
int a=10
int a1=10
int b=3;
float b1=3.0
int c=a/b;
float C1=a/B1;
printf(Take integer=%d\n ,c);
printf(Take decimal=%lf\n ,C1);
返回0;
}
以上代码编译结果:
模运算符( % )的说明:分子除以分母,例如:8%3=2注意:模运算符只能对整数求模,不能对小数求模。
模算符练习:计算100~200能被2整除的数并打印出来,按计数打印出总数。代码如下所示:
#包含stdio.h
int main(void){
int I;
int Count=0;
for(I=100;i=200我)
如果(i % 2==0)
printf(%d ,I);
数数;
printf(\nCount=%d\n ,计数);
返回0;
}
以上代码编译结果:
移位运算符二进制左移位运算符(“”)将操作数的所有二进制位向左移位若干位(左边的位被丢弃,右边的位用0填充)。注意:高位被丢弃,低位用0填充。二进制右移运算符(“”)将一个数的所有二进制位向右移动几位。正数左为0,负数左为1,右为弃。算术右移补最高位,逻辑右移补全零。注意:我们一般用算术右移的方法!注意:舍弃低位,高位填0“正数填0,负数填1”(左移):舍弃最高位,最低位填0。
(向右移动)如下
1.无符号数:最低位被丢弃,最高位用0填充。
2.有符号数:最低位被丢弃,最高位与有符号位互补。()
注意:取决于数据类型
例如,A=2,A=1,得到的数字是:4
0000000000000000000000000000000000000000000000000000000例如,A=2,A 1,得到的数是:1
0000000000000000000000000000000000000000000000000000000000000000001注意:按位移动时,我们要移动正常位数,不能移动100位,这样会出大问题。
:对于移位运算符,不要移动负数,这在标准中是没有定义的。
例如int num=2;
num-5;//错误
按位运算符按位AND运算符(“”)双目运算符。它的作用是参与运算的两个数的二进制相位,只有对应的两个二进制数为1时,结果位为1,否则为0。运算中涉及的数以补数的形式出现。操作规则
0 0=0;
0 1=0;
1 0=0;
1 1=1;
例如:9 5,代码如下:
#包含stdio.h
int main(void){
int a=9;//00001001 - 9
int b=5;//00000101 - 5
int c=a b;//00000001 - 1
printf(number=%d\n ,c);
返回0;
}
Run: number=1按位OR运算符( )双目运算符。它的功能是运算中涉及的两个数的二进制相或。只要相应的二进制位之一为1,结果位就是1。运算中涉及的两个数都是补数。操作规则
00=0;
01=1;
10=1;
11=1;
例如:9 5,代码如下:
#包含stdio.h
int main(void){
int a=9;//00001001 - 9
int b=5;//00000101 - 5
int c=a b;//00001100 - 12
printf(number=%d\n ,c);
返回0;
}
Run: number=1按位XOR运算符(“”)参与两个值的运算。如果两个对应的位相同,则结果为0,否则为1。对于同一个0,一个数与0的异或等价于它自己的数。操作规则
0^0=0;
0^1=1;
1^0=1;
1^1=0;
比如a=9和b=5的值互换,不能为互换创建变量!代码如下:
#包含stdio.h
int main(void){
int a=9;
int b=5;
Printf(交换前:a=%d b=%d\n ,a,b);
a=a ^ b;//1001 ^ 0101=1100 (12)
b=a ^ b;//1100 ^ 0101=1001 (9)
a=a ^ b;//1100 ^ 1001=0101 (5)
Printf(交换后:a=%d b=%d\n ,a,b);
返回0;
}
从上面的代码我们可以知道,bitwise XOR()可以在不创建临时变量的情况下交换两个数的值。
运行:交换前:a=9 b=5换行符a=5 b=9注意:所有位运算符必须是整数!
Yuze 51Ctop,
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。