高端网站公司,自定义表单网站,重庆网站建设哪家强,科技木是什么材料目录 1、移位操作符
2、位操作符 1、移位操作符
分为左移操作符#xff08;#xff09;和右移操作符()。
左移操作符#xff1a;
移位规则#xff1a;左边抛弃#xff0c;右边补0。
什么意思呢#xff0c;现在就让我来仔细讲解一番。
比如我们定义…目录 1、移位操作符
2、位操作符 1、移位操作符
分为左移操作符和右移操作符()。
左移操作符
移位规则左边抛弃右边补0。
什么意思呢现在就让我来仔细讲解一番。
比如我们定义一个整型变量a,给它赋初值5.如int a5;然后将a左移即a2,得到的结果又是多少呢在讲之前我们首先要了解到整型5在内存中是怎样存储的不太清楚的友友们就请看我之前一篇博客整数的3种表达形式及在内存中的存储啦里面有详细讲解。整型5是以补码的形式来存储的。而将5左移2位就是将存储在内存中的二进制位向左移动2位并将此2位抛弃右边用0补齐。最后得到的就是52后的结果啦可以用一下图来简单描述一下~ 根据上图可知a2后得到的结果就是20。
右移操作符
首先右移运算分为两种。算数移位和逻辑移位。
算数移位规则左边用该值的符号位填充右边丢弃。
逻辑移位规则左边用0补充右边丢弃。
具体什么意思呢我们还是来看看几个例子如将5右移移位即51,得到的是多少呢
如果是算数移位的话就是将5存储在内存中的二进制位向右移动1位并将这一位抛弃左边用该值存储的二进制位的符号位补齐。如下图 所以51得到的结果就是2。那逻辑移位呢逻辑移位就是左边用0补充右边抛弃。对正数而言其符号位就是0所以算数移位与逻辑移位得到的结果相同逻辑移位也可以用上图来表示啦得到的结果也是2。
若将-5右移一位呢得到的结果又是什么呢。我们先来看看算数移位就不多赘述了请看下图 所以-51算数移位得到的就是-3。
同理我们来看看-51逻辑移位的得到的是什么吧~ 因为最高位是0所以最后的结果就是3啦~。但是一般条件下都是用的算数移位哈。
2、位操作符 按位二进制位与
| 按位二进制位或
^ 按位二进制位异或
我们直接来看这段代码大家可以先猜一下最后输出的是哪三个数呢
int main()
{int a 3;int b -5;printf(%d %d %d, a b, a | b, a ^ b);return 0;
}
我们先来分析一下按位与就是将两个数存储的二进制位作比较两者均为1才为1否则为0。因此ab用图来分析就是 因此ab的结果就为3了。
按位或就是 将两个数存储的二进制位作比较两者中有一个为1就为1否则为0。因此a|b用图来分析就是 所以a|b的值就是-5了。
按位异或就是 两个数存储的二进制位作比较两者相同为0相异为1因此a^b用图来分析就是 所以a^b的结果就是-8啦。
最后我们让程序来运行一下 是和分析的一样吧~~~
到这里就结束啦希望友友们能给个赞哈~~~