C语言学习——位运算

C语言学习——位运算原码反码补码介绍原码 就是前面所介绍的二进制定点表示法,即最高位为符号位,“ 0 ”表示正,“ 1 ”表示负,其余位表示数值的大小。反码 表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。补码 表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加 1 。补码详细介绍补码是为了表示一个负数的二进制形式。其转化方式是,先将负数当成正数,转化成二进制…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

原码反码补码介绍

原码 就是前面所介绍的二进制定点表示法,即最高位为符号位,“ 0 ”表示正,“ 1 ”表示负,其余位表示数值的大小。

反码 表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。

补码 表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加 1 。

补码详细介绍

补码是为了表示一个负数的二进制形式。
其转化方式是,先将负数当成正数,转化成二进制的形式,再将二进制正数的各个位上取反,再加上一。

例如-5
先求出5的二进制数 : 0000 0000 0101
然后将各个位上0变1,1变0 : 1111 1111 1010
最后再加1 : 1111 1111 1011

按位与(&)

运算的两个数,转换算为二进制后,进行与(&)运算。
当相应位上的数都是1时,该位取1,否则该为0。

例如5 & -5
5 : 0000 0000 0101
-5 :1111 1111 1011
答案 : 0000 0000 0001

按位或(|)

运算的两个数,转换为二进制后,进行或(|)运算。
只要相应位上存在1,那么该位就取1,如果都不为1,就为0。

还是5 | -5
0000 0000 0101
1111 1111 1011
可以看到每一位中其中一个都有1
答案 :1111 1111 1111

按位异或(^)

运算的两个数,转换成二进制数后,进行异或(^)运算
如果相应位置上的数相同,该位取0,如果不同改位取1。

5 ^ -5
0000 0000 0101
1111 1111 1011
答案: 1111 1111 1110

同时任何数异或0都是其本身,一个数如果异或自己则等于0
这样我们可以用异或来交换两个数的值

比如交换x,y的值
x ^= y; x = x ^ y
y ^= x; y = y ^ x ^ y
x ^= y; x = ( x ^ y ) ^ (y ^ x ^ y) ; ——— //最后一步 x ^= y 时 x = x ^ y; y = y ^ x ^ y

左移(<<)

将一个数二进制下的数向左移若干位,
比如 x << y 就是将二进制下的x 向左移 y 位

例 : 5 << 5
5 : 0000 0000 0101
5 << 5 : 0000 1010 0000
在10进制下就等于160

我们可以思考一下,在十进制中,一个数每乘一次10就向左进一位。
那么在二进制中,同10进制一样,二进制中每乘一次2就向左进一位,
那么一个数左移x 就等价于一个数乘 2x。

右移(>>)

将一个数在二进制下右移若干位
与左移用法相同

例 5 >> 2
5:0000 0000 0101
5 >> 2 : 0000 0000 0001
十进制下等于1

这里与左移类似,十进制下每除10整数位就退一位
那么右移就等价于除了几次2
同时右移运算是向下取整的

取反(~)

其实在说补码的时候,取反就已经说了,就是将取反的数在二进制下的每一位取相反的数

5 : 0000 0000 0101
~5 : 1111 1111 1010

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/170962.html原文链接:https://javaforall.net

(0)
上一篇 2022年8月18日 上午9:36
下一篇 2022年8月18日 上午9:46


相关推荐

  • n皇后问题总结_模拟退火n皇后

    n皇后问题总结_模拟退火n皇后N皇后问题是一个经典的问题,在一个N*N的棋盘上放置N个皇后,每行一个并使其不能互相攻击(同一行、同一列、同一斜线上的皇后都会自动攻击)。一、 求解N皇后问题是算法中回溯法应用的一个经典案例      回溯算法也叫试探法,它是一种系统地搜索问题的解的方法。回溯算法的基本思想是:从一条路往前走,能进则进,不能进则退回来,换一条路再试。     在现实中,有很多问题往往需要我们把其所有

    2022年9月30日
    5
  • sqlserver 自动初始化从节点数据

    sqlserver 自动初始化从节点数据

    2021年11月27日
    46
  • java mybatis分页查询语句_mybatis分页查询的实现(一)[通俗易懂]

    java mybatis分页查询语句_mybatis分页查询的实现(一)[通俗易懂]一、总结了mybatis中五种不同实现分页查询的方法UserMapper.java接口文件publicinterfaceUserMapper{//分页查询publicListselectForPage1(intstartIndex,intpageSize);publicListselectForPage2(Mapmap);publicIntegerselectCount()…

    2022年6月2日
    65
  • Java中的关键字有哪些?「Java中53个关键字的意义及使用方法」

    Java中的关键字有哪些?「Java中53个关键字的意义及使用方法」Java中的关键字有哪些?Java的关键字(keyword)有多少个?Java的保留字(reserveword)有多少个?分别是什么?Java的关键字分别是什么,作用是什么?

    2022年7月7日
    27
  • IDEA 连接svn https报错问题:svn: E230001: Server SSL certificate verification failed: certificate issu解决办法

    IDEA 连接svn https报错问题:svn: E230001: Server SSL certificate verification failed: certificate issu解决办法windows R gt cmd 输入 svnlshttps xxx 注 xxx 是具体的 svn 项目地址 回车会提示 Passwordxxxx 输入密码回车 UserNamexxxf 输入用户名回车出现如下图示则重启 idea 重新下载项目即可

    2026年3月18日
    2
  • MYSQL和SQL的区别

    MYSQL和SQL的区别什么是SQL?SQL是一种用于操作数据库的语言。SQL是用于所有数据库的基本语言。不同数据库之间存在较小的语法更改,但基本的SQL语法基本保持不变。SQL是StructuredQueryLanguage的简短缩写。根据ANSI(美国国家标准协会),SQL是操作关系数据库管理系统的标准语言。SQL用于访问,更新和操作数据库中的数据。它的设计允许管理RDBMS中的数据,例如MYSQL。SQL语言还用于控制数据访问以及数据库模式的创建和修改。什么是MYSQL?MySQL是在90年代中期开发的,是

    2022年10月2日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号