首页 > 其他分享 >二进制数的逻辑运算

二进制数的逻辑运算

时间:2023-04-02 15:12:24浏览次数:32  
标签:例如 逻辑 逻辑运算 运算 二进制 51 异或

二进制数的逻辑运算有四种:“与”运算AND、“或”运算OR、 “非”运算NOT、“异或”运算XOR。

其中“或”运算又称逻辑加法、“与”运算又称逻辑乘法、“非”运算又称逻辑否定,“异或”运算又称逻辑半加法。二进制数1和0在逻辑上可以代表“真”与“假”、“是”与“否”、“有”与“无”。二进制数的逻辑运算算术运算是截然不同的,二进制数的逻辑运算是位对位的运算,本位运算结果不会对其他位产生任何影响,即不会出现算术运算中的进位或者借位。

1、“或”运算OR(逻辑加法)

通常用符号“+”或“∨”或“|”来表示。

运算规则如下:0+0=0 ,0+1=1 ,1+0=1 ,1+1=1

0∨0=0,0∨1=1,1∨0=1,1∨1=1

0|0=0, 0|1=1, 1|0=1, 1|1=1

表示两者只要有一个1,其逻辑或的结果就为1。

简单总结为:“遇1得1”,也类似于并联电路。

例如:求51 | 5

深入扩展用法:

(1)与0相“或”可保留原值,与1相“或”可将对应位置1。

例如:将X=10100000的高四位不变,低四位置1的操作为 x| 00001111 = 10101111。

例如:将x的第1、2位置1的操作为x | 00000110B

(2)可以给二进制特定位上的数无条件赋值,比如把二进制最末位强行变成1,或者把二进制最末位变成0。

例如:把A=4(二进制为100)末位变为1的操作为 A|1= (100|001=101);

把A=7(二进制为111)末位变为0的操作为 A|1-1= (111|001-1=110)。

(3)可以判断二进制数的奇偶。二进制的最末为0,表示该数为偶数,最末尾为1表示该数为奇数。例如:如果x|0=0,则x为偶数。

2、“与”运算AND(逻辑乘法)通常用符号“×”或“∧”或“·”或“&”来表示。

运算规则如下:

0×0=0,0×1=0,1×0=0,1×1=1

0∧0=0,0∧1=0,1∧0=0,1∧1=1

0·0=0,0·1=0,1·0=0,1·1=1

0&0=0 ,0&1=0 ,1&0=0 ,1&1=1

表示只有当两者同时为1时,其逻辑与的结果才能等于1。

简单总结为:“遇0得0”,类似于串联电路。

例如:求51 & 5

 

 

深入扩展用法:

(1)与0相“与”可清零。例如:对x的第0、3位清零的操作为 x & 11110110B。

(2)与1相“与”可保留原值,例如:取x中的后两位的操作为 x & 00000011B。

(3)可以判断二进制数的奇偶。如果x&1=0,则x为偶数。

(4)可以清除掉二进制整数最右边的1,操作为 x & (x – 1)

3、“非”运算NOT(逻辑否定)

通常用符号“~”、“!”或者上方加一横线来表示。

运算规则如下:

例如:求~51

~ 00110011=11001100

简单总结为:“取反”。非开即关,非关即开。

4、“异或”运算XOR(逻辑半加运算)通常用符号“^”、“⊕”来表示,

运算规则为:0⊕0=0,0⊕1=1,1⊕0=1,1⊕1=0

0^0=0, 0^1=1, 1^0=1, 1^1=0表示只有当两者不相同时,结果才为1,两者相同时结果为0。

简单总结为:“异1同0” ,直观意思即判断“是不是不一样”。

例如:求51 ^ 5

深入扩展用法:

(1)与0相”异或“可保留原值,与1相”异或“可将对应位置取反。例如:对x的3、7位取反的操作为 x^ 10001000B

(2)异或运算的逆运算是他本身,也就是说一个数经过两次异或后还是它本身。

(3)一个数和0异或是它的本身,和自身异或为0。即x^0=x ,x^x=0 。

(4)异或运算可以用于交换两个整数,不使用中间变量。

交换方法为:

A = A ^ B

B = A ^ B

A = A ^ B

证明:

已知 a=51,b=5

那么:

a=a^b=51^5

b=a^b=(51^5)^5=51^5^5=51^0=51

a=a^b=(51^5)^51=51^51^5=0^5=5

得到:a=5,b=51

标签:例如,逻辑,逻辑运算,运算,二进制,51,异或
From: https://www.cnblogs.com/huigui-mint/p/17280508.html

相关文章

  • 将pdf文件以二进制形式拆分并且写入另一个pdf
    staticpublicvoidmain(String[]args){Filefile=newFile("C:\\ceshi2\\ceshi.pdf");Filefile2=newFile("C:\\ceshi2\\123.pdf");try{InputStreamInputStream=newFileInputStream(file);......
  • 运算符【算术运算符/赋值运算符/比较运算符/逻辑运算符】
     算术运算符   赋值运算符:  比较运算符  逻辑运算符:  运算符优先级:  其他运算符查看官方教程 来源:https://www.runoob.com/python/python-operators.html......
  • mysql二进制文件安装方式
    安装进制包如果用户既不想安装最简单却不够灵活的RPM包,又不想安装复杂费时的源码包,那么,已经编泽好的二进制包将是很好的选择具体安装步骤如下。(1用root登录操作系统,增加mysql用户和组,数据库将安装在此用户下:she1l>groupaddmysalshell>useradd-gmysqlmysal(2)解压二进制安......
  • shell报错:bash:./xxx: 无法执行二进制文件: 可执行文件格式错误
    shell报错:bash:./xxx:无法执行二进制文件:可执行文件格式错误在ubuntu下运行一个可执行文件,但是出现错误:由于文件已经拥有可执行权限,遂考虑是不是该文件编译时的CPU指......
  • k8s-二进制安装
    安装前必读本文档适用于k8s1.17+安装说明:本文章将演示CentOS7二进制方式安装高可用k8s1.17+,相对于其他版本,二进制安装方式并无太大区别,只需要区分每个组件版本的对......
  • 逻辑运算符
    publicclassOpterDemo{publicstaticvoidmain(String[]args){System.out.println(true&true);System.out.println(true&false);Sys......
  • 打开二进制文件,为什么不显示0101,而是一堆乱码?(chatGPT)
    二进制文件中的每个字节都包含八个二进制位(bit),每个二进制位只有0或1两种状态,因此每个字节有256种不同的可能取值。当打开二进制文件时,如果将文件以文本形式打开,那么文件内......
  • fiddler post二进制数据
    使用fiddler抓包时,会发现抓到的post请求的data有些会以明文显示,有些会显示为乱码。这里介绍下如何post乱码数据给服务器,这里分两种情况:1、编码不对,所以显示为乱码;2、本身数......
  • 十进制,二进制,十六进制转换
    1十进制转换二进制(说明:十进制用各个方面进行相加,2的几次方后面就有几个零,然后各个数字相加,得到的结果就是二进制结果)二进制转换十进制反之2.二进制转换十六进制(11......
  • 逻辑运算符的优先级
    在一个表达式中,可以含有多个逻辑运算符,他们的优先级是:“!”最高“&&”次之“||”最低;逻辑运算低于所有关系运算,而“!”高于所有算术运算。第一个例子#define_CRT_SECURE_NO_W......