移位操作符

在C语言中 << 成为为左移操作符,>>称为右移操作符,例下面一串代码

#include<stdio.h>
int main()
{int a = 2;int b = a << 1;printf("%d",b);return 0;
}

b表示的是将a也就是数字2进行左移一位,这个左移操作符代表着将a也就是2 的二进制位向左移动一位

如图所示 在进行左移的时候右边要进行补零,

当然上面这个是针对于正整数而言的,要是一个数为负数的时候,这个时候我们应该了解到在计算机中,所有的数字都是以二进制的形式存放的,但存放的方式为该数字的补码,我们通常转化的数字的二进制位是其的源码,当然由于计算机中储存的是补码,因此我们之间还需要通过一定的转换方式,

当我们写出一个数字的源码时候,所有的正整数的原码,反码,补码都是相同的,因此我们针对于正整数一般不济与讨论

对于负数,最高位非零代表的是负数,

如这个数字就代表着 -5,我们在原码转换为反码和补码时遵循这样的规律:反码是原码的符号位不变,其它位按位取反。反码+1则为补码,因此我么可以得出-5的原码反码和补码为

那么这下回到我们的移位操作符中来,如下

#include<stdio.h>
int main()
{int a = -5;int b = a << 1;printf("%d",b);return 0;
}

我们将-5向左移动一位则会得到什么样的结果呢?通过编译器的编译我们将会得到b=-10

因为当我么将-5的补码向左移动一位右边补零则是11111111111111111111111111110110将其逆推则会得到原码为10000000000000000000000000001010因此将-5左移一位则会得到-10

接下来我么来讨论右移,在右移时候我们有了左移操作符所讲的因此可以类似推出来>>操作符就是将数字的补码进行右移,但是左边会少了几位,这个时候左边少的这个应该是什么呢?

在右移中我们通常有两种右移方法,一种为算数右移:右边的丢弃,左边补原符号位。另外一种为逻辑右移:右边丢弃,左边补零。至于我们的右移是na'种方法那是要具体看我们的编译器是怎样进行移动的。

位操作符

在位操作符中一般有三种    &   |   ^

& 按(2进制)位与

|  按(2进制)位或

^  按(2进制)位异或

#include<stdio.h>
int main()
{int a = 5;int b = 3;int c = a & b;return 0;
}

此时c就等于a按位与b

按位与是同时为1才取1,反之则取0;则有

a & b = 1

同时也有  |  按位或:同时为0才取0,有1则按位1

^  按位异或:相同则为0;相异则为1

C语言移位操作符和位操作符相关推荐

  1. 【C语言初阶】带你轻松玩转所有常用操作符(1) ——算数操作符,移位操作符,位操作符

    君兮_的个人主页 勤时当勉励 岁月不待人 C/C++ 游戏开发 Hello,这里是君兮_,最近要准备期末复习了,可能更新的就不会那么频繁了,下个星期恢复正常更新. 操作符详解1 前言 一.操作符的分类 ...

  2. 一元操作符、强制类型转换表达式、乘除操作符、加法操作符、移位操作符、关系操作符、判等操作符、位操作符与逻辑操作符、条件与操作符、条件或操作符--运算机制与返回值

    操作符处理及返回值 先遣提示 一元操作符 前缀递增操作符 ++ 前缀递增操作符 - - 一元加号操作符 + 关于一元数值提升或二元数值提升 可以看这篇博客 一元减号操作符 - 这里涉及了 原码,反码, ...

  3. C语言之移位操作符、位操作符详解

    目录 1.移位操作符 2.位操作符 1.移位操作符 分为左移操作符(<<)和右移操作符(>>). 左移操作符: 移位规则:左边抛弃,右边补0. 什么意思呢,现在就让我来仔细讲解 ...

  4. 不懂异或?一文详解移位操作符,位操作符

    一.移位操作符 <<   >> 在介绍移位操作符前先学习一下二进制的表示方法,二进制表示方法有3种: 原码,反码,补码 正数原码,反码,补码相同 负数原码,反码,补码需要计算 ...

  5. 操作符(一)(算数操作符,位移操作符,位操作符)

    目录: 1.算术操作符 2.位移操作符 (1) <<    左移操作符(高位丢掉,低位补0): eg:将1左移1位 (2) >> 右移操作符: eg1:将1右移一位 eg2:将 ...

  6. c++ 操作符大全-算术操作符、关系操作符、逻辑操作符、位操作符、自增自减操作符、赋值操作符、条件操作符、逗号操作符、操作符优先级

    文章目录 操作符 1.算术操作符 2.关系操作符 3.逻辑操作符 4.位操作符 5.自增自减操作符 6.赋值操作符 7.条件操作符 8.逗号操作符 9.操作符优先级 操作符 计算机程序可以看作一串运算 ...

  7. C语言中的按位操作符~介绍

    一.在C语言中~的作用是将一个数二进制全部取反(即就是0变1,1变0),如0 首先0的二进制为:000000000000000000000000000000000 反码为:11111111111111 ...

  8. java中的操作符(位操作符>>与>>>的区别)

    本人学习地址:JAVA自学网站HOW2J package operateTest;//import java.util.Scanner;public class OperateTest {public ...

  9. C语言位操作符的使用

    C语言的设计具备了汇编语言的运算能力,它支持全部的位操作符.位操作符是对字节或字中的位进行测试.置位或移位处理,在对微处理器的编程中,特别适合对寄存器.I/O端口进行操作. 6种伟操作符: (1) & ...

最新文章

  1. win7怎么关闭虚拟机服务器,大师教您Win7系统怎么彻底关闭退出vmware虚拟机的处理要领...
  2. 简单做了一个sina微博的MVC第三方登陆
  3. java一维数组插入元素_Java 数组 之 一维数组 追加 元素
  4. python代码示例下载-python下xml解析库lxml最新版下载安装以及代码示例
  5. NYOJ 16 矩形嵌套
  6. 爬取《哪吒》豆瓣短评,我得到了什么?
  7. egg风格 什么意思_小小的“egg”,有你想象不到的秘密……
  8. 2019年美国大学生数学建模竞赛(MCM/ICM) E题解题思路
  9. 计算机算法知识总结,移动笔试知识点之--计算机类-数据结构与算法知识点总结.pdf...
  10. python绘制饼图程序_python使用Matplotlib绘制饼图
  11. 百度SEO 统计平台推送工具 1.8
  12. 解决:能提交和更新,但SVN查看log时提示找不到路径'svn/XXXX'
  13. 网络编程:TCP简单实现群聊功能
  14. 2020-12-25
  15. 微信小程序实现账号密码登入和传值显示
  16. AD元件简写中英文对照表
  17. 微信小程序——计算从今天到某天间隔多少天
  18. 汽车技术管理系统c语言,[源码和文档分享]基于C语言实现的汽车牌照的快速查询...
  19. 什么是IDU和ODU
  20. 数据传输加密非对称加密算法以及对称算法-RSA+AES

热门文章

  1. 集群任务管理系统SGE的简明教程
  2. Kerberos常见问题
  3. 安装php时丢失140文件,msvcp140.dll丢失的解决方法是什么
  4. 有哪些你觉得能借助学习以自我提升的网站推荐?
  5. Win8怎么加快桌面图标刷新速度?提高图标刷新速度的方法解析
  6. Stellaris堕落帝国cos教程/存档
  7. 人民币对美元中间价上调469个基点 涨破6.75
  8. 2010 真正的软件灾难年?
  9. MySQL死锁详解及检测和避免
  10. iStylePDF在线阅读编辑控件在多浏览器(IE,firefox,chrome,opera等)中的使用