C语言移位操作符和位操作符
移位操作符
在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语言移位操作符和位操作符相关推荐
- 【C语言初阶】带你轻松玩转所有常用操作符(1) ——算数操作符,移位操作符,位操作符
君兮_的个人主页 勤时当勉励 岁月不待人 C/C++ 游戏开发 Hello,这里是君兮_,最近要准备期末复习了,可能更新的就不会那么频繁了,下个星期恢复正常更新. 操作符详解1 前言 一.操作符的分类 ...
- 一元操作符、强制类型转换表达式、乘除操作符、加法操作符、移位操作符、关系操作符、判等操作符、位操作符与逻辑操作符、条件与操作符、条件或操作符--运算机制与返回值
操作符处理及返回值 先遣提示 一元操作符 前缀递增操作符 ++ 前缀递增操作符 - - 一元加号操作符 + 关于一元数值提升或二元数值提升 可以看这篇博客 一元减号操作符 - 这里涉及了 原码,反码, ...
- C语言之移位操作符、位操作符详解
目录 1.移位操作符 2.位操作符 1.移位操作符 分为左移操作符(<<)和右移操作符(>>). 左移操作符: 移位规则:左边抛弃,右边补0. 什么意思呢,现在就让我来仔细讲解 ...
- 不懂异或?一文详解移位操作符,位操作符
一.移位操作符 << >> 在介绍移位操作符前先学习一下二进制的表示方法,二进制表示方法有3种: 原码,反码,补码 正数原码,反码,补码相同 负数原码,反码,补码需要计算 ...
- 操作符(一)(算数操作符,位移操作符,位操作符)
目录: 1.算术操作符 2.位移操作符 (1) << 左移操作符(高位丢掉,低位补0): eg:将1左移1位 (2) >> 右移操作符: eg1:将1右移一位 eg2:将 ...
- c++ 操作符大全-算术操作符、关系操作符、逻辑操作符、位操作符、自增自减操作符、赋值操作符、条件操作符、逗号操作符、操作符优先级
文章目录 操作符 1.算术操作符 2.关系操作符 3.逻辑操作符 4.位操作符 5.自增自减操作符 6.赋值操作符 7.条件操作符 8.逗号操作符 9.操作符优先级 操作符 计算机程序可以看作一串运算 ...
- C语言中的按位操作符~介绍
一.在C语言中~的作用是将一个数二进制全部取反(即就是0变1,1变0),如0 首先0的二进制为:000000000000000000000000000000000 反码为:11111111111111 ...
- java中的操作符(位操作符>>与>>>的区别)
本人学习地址:JAVA自学网站HOW2J package operateTest;//import java.util.Scanner;public class OperateTest {public ...
- C语言位操作符的使用
C语言的设计具备了汇编语言的运算能力,它支持全部的位操作符.位操作符是对字节或字中的位进行测试.置位或移位处理,在对微处理器的编程中,特别适合对寄存器.I/O端口进行操作. 6种伟操作符: (1) & ...
最新文章
- win7怎么关闭虚拟机服务器,大师教您Win7系统怎么彻底关闭退出vmware虚拟机的处理要领...
- 简单做了一个sina微博的MVC第三方登陆
- java一维数组插入元素_Java 数组 之 一维数组 追加 元素
- python代码示例下载-python下xml解析库lxml最新版下载安装以及代码示例
- NYOJ 16 矩形嵌套
- 爬取《哪吒》豆瓣短评,我得到了什么?
- egg风格 什么意思_小小的“egg”,有你想象不到的秘密……
- 2019年美国大学生数学建模竞赛(MCM/ICM) E题解题思路
- 计算机算法知识总结,移动笔试知识点之--计算机类-数据结构与算法知识点总结.pdf...
- python绘制饼图程序_python使用Matplotlib绘制饼图
- 百度SEO 统计平台推送工具 1.8
- 解决:能提交和更新,但SVN查看log时提示找不到路径'svn/XXXX'
- 网络编程:TCP简单实现群聊功能
- 2020-12-25
- 微信小程序实现账号密码登入和传值显示
- AD元件简写中英文对照表
- 微信小程序——计算从今天到某天间隔多少天
- 汽车技术管理系统c语言,[源码和文档分享]基于C语言实现的汽车牌照的快速查询...
- 什么是IDU和ODU
- 数据传输加密非对称加密算法以及对称算法-RSA+AES
热门文章
- 集群任务管理系统SGE的简明教程
- Kerberos常见问题
- 安装php时丢失140文件,msvcp140.dll丢失的解决方法是什么
- 有哪些你觉得能借助学习以自我提升的网站推荐?
- Win8怎么加快桌面图标刷新速度?提高图标刷新速度的方法解析
- Stellaris堕落帝国cos教程/存档
- 人民币对美元中间价上调469个基点 涨破6.75
- 2010 真正的软件灾难年?
- MySQL死锁详解及检测和避免
- iStylePDF在线阅读编辑控件在多浏览器(IE,firefox,chrome,opera等)中的使用