一、与(&)

参加运算的两个数据,按二进制位进行“与”运算。
运算规则:0&0=0; 0&1=0; 1&0=0; 1&1=1;
例如:15&5 即 0000 1111 & 0000 0101 = 0000 0101 因此,3&5的值得5。

负数按补码形式参加按位与运算。

二、或(|)

参加运算的两个对象,按二进制位进行“或”运算。
运算规则:0|0=0; 0|1=1; 1|0=1; 1|1=1;
例如:3|5 即 0000 0011 | 0000 0101 = 0000 0111 因此,3|5的值得7。

负数按 补码 形式参加按位或运算。

补充

!!!补码是what
1、数据存储在内存中都是存储的二进制,二进制又可分为原码、反码、补码。最终存储在内存中的是“补码”。
2、二进制的第一位是符号位,0代表正数,1代表负数。
3、正数:原码=反码=补码

例如:9 == int == 4个字节 == 1个字节等于8位 == 整型有32位
正数的原码:
0000 0000 0000 0000 0000 0000 0000 1001
正数的反码就是正数的原码:
0000 0000 0000 0000 0000 0000 0000 1001
正数的补码也是正数的原码:
0000 0000 0000 0000 0000 0000 0000 1001

4、负数: 原码 = 补码取反加1,补码 = 原码取反加1

例如:-9
原码为首位为1的二进制数:
1000 0000 0000 0000 0000 0000 0000 1001
反码为符号位不变,其他位取反:
1111 1111 1111 1111 1111 1111 1111 0110
补码是反码加1:
1111 1111 1111 1111 1111 1111 1111 0111

三、异或(^)

参加运算的两个数据,按二进制位进行“异或”运算。
运算规则:0^0=0; 0^1=1; 1^0=1; 1^1=0;

交换律:A ^ B=B ^ A
结合律:A ^ B ^ C=A ^ (B ^ C)=(A ^ B) ^ C
自反律:A ^ B ^ B=A ^ 0=A
自反律:X ^ X=0 ,X ^ 0=X

四、取反(~)

参加运算的一个数据,按二进制位进行“取反”运算。
运算规则:~1=0; ~0=1;

使一个数的最低位为零,可以表示为:a&~1。
~ 1的值为1111 1111 1111 1110,再按“与”运算,最低位一定为0。因为“~”运算符的优先级比算术运算符、关系运算符、逻辑运算符和其他运算符都高。

补充

>>>表示无符号右移,也叫逻辑右移,即若该数为正,则高位补0,而若该数为负数,则右移后高位同样补0
正数: r = 20 >>> 2 的结果与 r = 20 >> 2 相同;负数: r = -20 >>> 2
注:以下数据类型默认为int 32位-20:源码:10000000 00000000 00000000 00010100反码:11111111  11111111   11111111   11101011补码:11111111  11111111   11111111   11101100右移:00111111  11111111   11111111   11111011结果:r = 1073741819

与() 、或(|)、异或(^) 、取反(~) 运算相关推荐

  1. 按位与、或、异或、移位运算

    按位与运算符(&) 参加运算的两个数据,按二进制位进行"与"运算. 运算规则:0&0=0; 0&1=0; 1&0=0; 1&1=1; 即:两 ...

  2. 取模运算与hash function

    取模运算常常对应于hash散列: k%m k\;\%\;m 如果从映射(map)的角度看待取模运算的话,其实是对原始空间取值范围的一种放缩,比如缩放到 [0,m−1][0,m-1](整数). 如果这时 ...

  3. 异或和同或运算之间的等价关系

    异或和同或运算之间的等价关系 这里主要探讨三输入的异或门或者同或门 首先 a⊕b=a⊙b‾a \oplus b = \overline{a \odot b}a⊕b=a⊙b​ a⊕b⊕c=a⊙b⊙c=a ...

  4. 取模运算(包括负数)

    取模运算只能运用于整数运算,得到余数. 负数的取模运算: 如果第一个操作数为负数,则得到的模也是负数:如果第一个操作数是正数,则得到的模也是正数.与第二个操作数的正负没有关系,只跟第一个操作数有关.实 ...

  5. 取余运算应用(1)-在js中

    取余运算应用(1)-在js中 1.应用1, 让一个数在一个范围内内循环 // 参考: https://zhuanlan.zhihu.com/p/55210125 // eg.让temp在0~5循环 l ...

  6. 取模运算法则,异或运算法则

    一.取模运算法则(百度百科) 定义 给定一个正整数p,任意一个整数n,一定存在等式 : n = kp + r : 其中 k.r 是整数,且 0 ≤ r < p,则称 k 为 n 除以 p 的商, ...

  7. Java中的与、或、非以及异或( | ~ ^)运算符的运算原理

    首先,我们要知道Java存储数据是保存的补码,如果对原码.反码以及补码不太懂,可以参考我的另一篇博客. 1. Java的 与( & ) 运算 所有的逻辑运算都是按位计算的,所以第一步就是先把数 ...

  8. 取余运算怎么算_c语言中的基本运算其一!

    一:算术运算符 算术运算符非常地简单,就是小学数学里面的一些加减乘除操作.不过呢,还是有一些语法细节需要注意的. 1.加法运算符 + 1 int a = 10; 2 3 int b = a + 5; ...

  9. Python的异或(‘^’)运算和程序控制流程题

    1.两个数交换,要求使用异或法完成 a=29 b=35 a=a^b b=b^a a=a^b print(a) print(b) 2.给定成绩,判断用户成绩的档次 grades=float(input( ...

最新文章

  1. JAVA NIO - Buffer Channel
  2. linix终端输入mysql,Linux服务器如何进入 MySQL 命令行
  3. linux fedora14 u盘运行,Win7下Fedora 14 硬盘或U盘安装指南
  4. vs自定义安装包的制作
  5. 漫漫MySQL之路(1.MySQL简介和诞生)
  6. MyBatis 插件原理与自定义插件-插件编写与注册
  7. 一个人自学会java有用吗,大连java程序员培训经历(自学Java可以吗)
  8. cv2.imread()返回none时应如何解决
  9. 20200221_2_国家非文化遗产爬虫代码
  10. make: 未找到命令
  11. hive like与rlike的区别
  12. iOS使用自定义字体,比如楷体
  13. Redis 的过期策略
  14. 麒麟信安加入中国首个桌面操作系统根社区openKylin, 共擎开源未来!
  15. keil如何添加h文件_被Keil坑了一天!实在太意外了!用Keil的来瞅瞅看
  16. Ubuntu搭建CTFd平台实现动态靶机的过程
  17. 华为云服务器默认密码怎么修改,如何修改云服务器登陆密码
  18. linux命令行看图工具,六个鲜为人知的超酷Unix/Linux命令
  19. 2021年安全员-A证考试内容及安全员-A证模拟考试
  20. html测试方案,网站测试方案.doc

热门文章

  1. 魔方APP项目-04-用户模块API接口、Marshmallow,基本构造器(Schema),Schema数据序列化、Schema数据反序列化、反序列化对数据验证、模型构造器(ModelSchema)
  2. 取消耳机孔的 4 年后,苹果居然把耳机卖到了四千块
  3. 学机器学习的基础课程
  4. IntelliJ IDEA 下载安装及其破解
  5. PTA: 6-8 剩余不足 (10分)(c语言)
  6. Linux c 开发 - 指针
  7. arcgis怎么压缩tif文件_微信传文件有大小限制怎么办?教你3秒把100MPPT压缩成10M...
  8. FlyAI小课堂:python机器学习笔记:深入学习决策树算法原理
  9. 条件概率,乘法定理 (概统1)
  10. 作为程序员,如何征战应聘沙场?