-
2021-03-28 09:30:41
介绍
计算机中的逻辑关系是一种二值逻辑,二值逻辑很容易用二进制的数 1(true)或 0(false)表示,例如真与假、是与否、成立于不成立
- 包括逻辑“与”、逻辑“或”、逻辑“非”、逻辑“异或”。
- 我在不同的地方查二进制逻辑运算发现使用的符号有多种,这里采用算法竞赛中所使用的符号。
逻辑“与”
“与”运算(逻辑乘),用符号 “ & \& &” 或 a n d and and 表示。
- 1 & 1 = 1 1\ \&\ 1=1 1 & 1=1
- 0 & 0 = 0 0\ \&\ 0=0 0 & 0=0
- 1 & 0 = 0 1\ \&\ 0=0 1 & 0=0
- 0 & 1 = 0 0\ \&\ 1=0 0 & 1=0
例: 1010 & 1010\ \& 1010 &
1001 ‾ = \underline{1001}= 1001=
1000 1000 1000
小结:一位为 0 0 0,结果为 0 0 0;若都为 1 1 1,结果为 1 1 1。
逻辑“或”
“或”运算(逻辑加),用符号 “ ∣ | ∣” 或 o r or or 表示。
- 1 ∣ 1 = 1 1\ |\ 1=1 1 ∣ 1=1
- 0 ∣ 0 = 0 0\ |\ 0=0 0 ∣ 0=0
- 1 ∣ 0 = 1 1\ |\ 0=1 1 ∣ 0=1
- 0 ∣ 1 = 1 0\ |\ 1=1 0 ∣ 1=1
例: 1010 ∣ 1010\ | 1010 ∣
1001 ‾ = \underline{1001}= 1001=
1011 1011 1011
小结:一位为 1,结果为 1;若都为 0 0 0,结果为 0 0 0。
逻辑“非”
“非”运算(逻辑否),用符号 “~” 或 n o t not not 表示。
- ~1 = 0
- ~0 = 1
例:~ 10 = 10= 10=
01 \ \ 01 01
小结:非 1 1 1 为 0 0 0,非 0 0 0 为 1 1 1。
逻辑“异或”
“异或”运算通常用符号 “xor”1 表示,其运算规则为:
- 0 x o r 0 = 0 0\ xor\ 0=0 0 xor 0=0
- 0 x o r 1 = 1 0\ xor\ 1=1 0 xor 1=1
- 1 x o r 0 = 1 1\ xor\ 0=1 1 xor 0=1
- 1 x o r 1 = 0 1\ xor\ 1=0 1 xor 1=0
例: 1010 x o r 1010\ xor 1010 xor
1001 = 1001= 1001=
0011 0011 0011
小结:不同为 1 1 1;相同为 0 0 0。
一般“^”符号用于表示乘方运算,但在 C++ 中表示为异或。为了避免歧义我们统一将异或用“xor”表示 ↩︎
更多相关内容 -
二进制的逻辑运算PPT学习教案.pptx
2021-10-07 07:53:18二进制的逻辑运算PPT学习教案.pptx -
二进制数的算术运算和逻辑运算
2021-04-08 19:28:251位八进制可以写成3位二进制,因为3位二进制可以表示十进制范围0~7,也就是1位八进制的表示范围。 1位十六进制可以写成4位二进制,因为4位二进制可以表示十进制范围0~15,也就是1位十六进制的表示范围。 后缀B表示二...算术运算
二进制数加法采用逢二进一、减法采用借一作二。
十六进制数加法采用逢十六进一、减法采用借一作十六。
1位八进制可以写成3位二进制,因为3位二进制可以表示十进制范围0~7,也就是1位八进制的表示范围。
1位十六进制可以写成4位二进制,因为4位二进制可以表示十进制范围0~15,也就是1位十六进制的表示范围。
后缀B表示二进制,H表示十六进制,D表示十进制。
例如:
1011011B + 10011B = 1101110B
1011 B * 10011B = 11010001B
65H + 7AH = 0DFH
65H * 7AH = 3022H
110011.0101B + 22.4H = (110011.0101B + 100010.01B = 1010101.1001B =) 85.5625D逻辑运算
二进制数的逻辑运算是位对位的运算,即本位运算结果不会对其他位产生任何影响,这一点与算术运算是截然不同的。
二进制数的逻辑运算有四种:与AND、或OR、异或XOR、非NOT。
例如:
10010111B AND 00111000B = 00010000B
10010111B OR 00111000B = 10111111B
10010111B XOR 00111000B = 10101111B另外,利用逻辑运算可以完成特定操作。
AND运算可以对指定位进行清零:
对x的第0、3位清零操作:x AND 11110110B
OR运算可以对指定位进行置一:
对x的第1、2位置1操作:x OR 00000110B
XOR运算可以对指定位进行取反:
对x的地3、7位取反操作:x XOR 10001000B -
二进制算术、逻辑运算
2021-01-23 11:43:27二进制算术1、逻辑运算1.1 加法运算规则1.2 减法运算规则1.3 乘法运算规则1.4 除法运算规则2、逻辑运算 \quad \quad二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,...
\quad \quad 二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”,由18世纪德国数理哲学大师莱布尼兹发现。当前的计算机系统使用的基本上是二进制系统,数据在计算机中主要是以补码的形式存储的.二进制数的运算包括算术运算、逻辑运算。1、算术运算
1.1 加法运算规则
规则:逢二进一
例子:
1.2 减法运算规则
规则:借一当二
例子:
1.3 乘法运算规则
规则:乘什么就是什么
例子:
1.4 除法运算规则
规则:二进制的除法运算和十进制的类似,不存在进位、借位。
例子:
1.5 负数
二进制下负数的表示: 正数的反码加1
5: 00000000 00000000 00000000 00000101
5的反码: 11111111 11111111 11111111 11111010
-5: 11111111 11111111 11111111 111110112、逻辑运算
-
二进制和位运算
2019-03-15 20:03:26所有编程语言都是一种人和计算机之间的翻译工具,人的数组语言翻译成二进制给计算机读取,然后把计算机的二进制数据翻译成人类的语言呈现出来。 16进制 16进制用于缩写(简写)2进制,将2进制从后向前 每4位数转换...2进制
什么2进制?计算机为什么使用2进制
逢2进1的计数规则
电子设备设计成处理2进制,其成本最优。
计算机如何解决人类和计算机直接的机制矛盾
所有编程语言都是一种人和计算机之间的翻译工具,人的数组语言翻译成二进制给计算机读取,然后把计算机的二进制数据翻译成人类的语言呈现出来。
16进制
16进制用于缩写(简写)2进制,将2进制从后向前 每4位数转换为1位16进制。
补码
补码: 将固定位数的2进制数分一半作为负数使用的编码规则。其目的是为了解决负数计算问题。
以4位补码为例研究补码的编码规则! 将4位2进制分一半作为负数使用。
这种规则下减法也可以用加法来计算,相邻两个数顺时针方向增加1。二进制的换算
从0到最大值的计算无需多说,就按二进制来算就行。
负数的二进制换算方法:负数可以跟-1比较,-1是所有位都为1,拿到一个二进制负数,只要看它比-1小多少就可以算出它对应的十进制数:
11111111 11111111 11111111 11101010
11111111 11111111 11111111 111111111(-1)
以上面这个数为例,上面这个数比-1少了(1+4+16=21),所以它的十进制就是-1-21=-22.相反数的对应关系
在这种编码规则下还有个特点,就是一个数求反再加一就是它的相反数,即:n=~n+1;
经典面试题目:System.out.println(~100+1); 如上代码的输出结果: A. -99 B.-100 C.-101 D.-102 答案:B 100 00000000 00000000 00000000 01100100 ~100 11111111 11111111 11111111 10011011 -101 ~100+1 11111111 11111111 11111111 10011100 -100 System.out.println(~100); 如上代码的输出结果: A. -99 B.-100 C.-101 D.-102 答案:C
2进制运算(位运算)
位运算符有:
与 & 、 或| 、异或^、取反~ 、左移位<< 、
数学右移位(有符号右移)>> 、逻辑右移位(无符号右移)>>>与计算 & (逻辑乘法)
计算规则:
0 & 0 -> 0 0 & 1 -> 0 1 & 0 -> 0 1 & 1 -> 1
有0则0
计算时候,将两个数对其位数,将齐的数字进行 “&” 计算
举个栗子:
n= 01110100 01111101 00101111 01101011 m= 00000000 00000000 00000000 11111111 k=n&m 00000000 00000000 00000000 01101011
如上计算的意义:k是n的最后8位数!也就将n的最后8位切下放到k中。
称为掩码(mask)计算,其中m称为掩码(mask),m有8个1时候称为8位掩码代码:
int n = 0x747d2f6b; int m = 0xff;// 0xf 0x3f 0xffff int k = n&m; //按照2进制输出 n m k 的值
右移位计算 >>>
规则: 将数字整体向右移位,高位补,低位自动溢出
举个栗子:
n= 01101001 11111010 01110000 01010101 m=n>>>1 001101001 11111010 01110000 0101010 k=n>>>2 0001101001 11111010 01110000 010101 g=n>>>8 00000000 01101001 11111010 01110000
代码:
int n = 0x69fa7055; int m = n>>>1; int k = n>>>2; int g = n>>>8; //将整数n拆分为4个字节 b1 b2 b3 b4 int b1 = (n>>>24) & 0xff; int b2 = (n>>>16) & 0xff int b3 = (n>>>8) & 0xff; int b4 = n & 0xff;
应用:与运算和右移配合可以实现用某种长度的掩码把数据分段截取,数据传输经常这样使用
或计算 | (逻辑加法)
基本规则:
0 | 0 -> 0 0 | 1 -> 1 1 | 0 -> 1 1 | 1 -> 1
有1则1
将两个数对齐位置,对应数字进行 或计算
举个栗子:
n = 00000000 00000000 11001101 00000000 n=0xcd00 m = 00000000 00000000 00000000 11011111 m=0xdf; k =n|m 00000000 00000000 11001101 11011111 k=n|m b1= 00000000 00000000 00000000 11011101 b1=0xdd; b2= 00000000 00000000 00000000 01101110 b2=0x6e; b3= 00000000 00000000 00000000 10111011 b3=0xbb; b4= 00000000 00000000 00000000 10101101 b4=0xad; //左移运算符 b1<<24 11011101 00000000 00000000 00000000 b2<<16 00000000 01101110 00000000 00000000 b3<<8 00000000 00000000 10111011 00000000 b4= 00000000 00000000 00000000 10101101 x= 11011101 01101110 10111011 10101101 b1 b2 b3 b4 x= (b1<<24)|(b2<<16)|(b3<<8)|b4
应用:或运算配合左移刚好可以完成数据的拼接,也是在数据传输中使用
移位计算的数学意义
复习: 移动小数点计算
如: 52439. 小数点向右移动一次: 524390. 数字扩大10倍 小数点向右移动二次: 5243900. 数字扩大100倍 假如小数点不动,数字向左移动:数字向左移动一次,数字扩大10倍 2进制时候: 数字向左移动:数字向左移动一次,数字扩大2倍 128 64 32 16 8 4 2 1 0 0 1 1 0 0 1 0 0 1 1 0 0 1 0 0 <<1
逻辑右移位 >>> 数学右移位 >> 的区别
数学右移位 >> 计算的结果是: 数据除以2向小取整数的结果
区别:
逻辑右移位 >>> 移位时候,正数高位补0 负数高位补0,单纯将数字向右移动,用于数字的拆分计算
数学右移位 >> 移位时候,正数高位补0 负数高位补1,用于替代特殊除法计算举个栗子:
n= 11111111 11111111 11111111 11001110 -50 m=n>>1 111111111 11111111 11111111 1100111 -25 k=n>>2 1111111111 11111111 11111111 110011 -13 x=n>>>1 011111111 11111111 11111111 1100111 y=n>>>2 0011111111 11111111 11111111 110011 逻辑右移位 >>> 单纯将数字向右移动,用于数字的拆分计算 数学右移位 >> 用于替代特殊除法计算
-
python中的二进制逻辑运算
2020-09-08 12:13:57python中的二进制逻辑运算逻辑运算 逻辑运算 python中含有和c++一样的&,|,~,^等逻辑运算,可以模拟加减乘除等基础运算。 由于在python中定义变量类型没有固定的位长,我们在使用bin()方法打印变量的二进制表示时... -
第八课_二进制的逻辑运算,计算机是如何运算的
2020-03-10 22:52:47前言 前面的课程有粉丝评论说没看懂,本id回去细看了一下,确实写得...为什么要讲这个,因为计算机的本质就是这些二进制的逻辑运算。计算机之所以用二进制,是因为受硬件条件的制约。但是即便是这么简单的0和1,... -
二进制的四则运算及逻辑运算
2020-08-03 16:48:07因为二进制只有两个数码,一个是0一个是1,也就是0和1之间的运算。 例题 计算37-38的值 解: 分别求得+37和-38的补码:00100101、11011010 。 然后,进行按位求和,得到: 00100101+11011010 = 11111111 所以,... -
二进制信息最基本的逻辑运算有哪三种
2021-07-24 00:38:15二进制信息最基本的三种逻辑运算:1、逻辑加法(又称“或”)运算,通常用符号“+”或“∨”来表示;2、逻辑乘法(又称“与”)运算,通常用符号“×”或“∧”或“·”来表示;3、逻辑否定(又称“非”)运算。本教程操作... -
二进制位运算
2017-12-03 20:00:01一,位运算基础 位运算(包括与,或,取反,异或,左移,右移等)是程序设计中的一个重要的领域。尤其是安全和底层开发中,除了指针的频繁使用之外,位运算是另一个非常频繁使用的领域。 因此,在求职面试中,位... -
二进制及逻辑运算学习
2013-07-15 10:12:271.十进制转二进制:(如果是整数)除以2取余,逆序排列,(如果是小数)乘以2取整,顺序排列 例:10(10)=1010(2) 10%2=0 5%2=1 2%2=0 1%2=1 最后表示为二进制就是1010 例: (0.625)10= (0.101)2 0.... -
附录B小结:二进制、十六进制、逻辑运算与算术运算
2018-08-09 22:54:232、记住前15个数值的二进制与十六进制表现形式有助于完成它们之间的转换工作 3、在使用无符号数值时,进位标志有助于判断是否发生溢出 4、使用逻辑运算符“or”,“and”,和“xor”分别来实现对比特位的设置、... -
二进制数的运算
2020-06-01 23:08:44有关二进制的算术运算、逻辑运算 -
二进制的位运算详解
2017-12-19 18:25:30① 将数转化为二进制(实际机器操作中本身就是二进制,这里的意思是人工计算) ② 每一位都进行如下运算: a) 1与1与运算得1 b) 1与0(0与1)与运算得0 c) 0与0与运算得0 两个数按位进行或运算特点有: ... -
通过二进制逻辑运算解题
2020-06-29 19:36:51思路:2的幂次的二进制只含有一个1,n-1则除了该位为0,其余皆为1,故而n & (n-1) = 0 import java.util.*; public class Main { public static void main(String[] args){ Scanner in = new Scanner(System... -
Java中关于二进制以及位运算的详解
2021-03-14 12:22:55Java中的二进制及基本的位运算二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”,由18世纪德国数理哲学大师莱布尼兹... -
二进制与逻辑运算 超星书籍
2011-05-10 21:08:57详细介绍了二进制与逻辑运算,本书不仅仅是学习数电模电的基础,而且还是学习微机原理的基础 -
二进制的位运算
2016-10-18 16:49:49二进制的位运算有哪些? (1).按位and运算& (2).按位or运算| (3).按位异或运算^ (4).取反运算~ (5).左移运算 (6).右移运算>> -
Python的二进制位运算
2019-09-15 00:53:20Python语言能够对整数进行逐位操作,它支持的运算符及含义如下所示: &:按位与 |:按位或 ^:按位异或 ~:取反 <<:左移 >>:右移 ... -
二进制基础及位运算
2019-12-04 16:06:09二进制计算 每一位上的数基数的索引次幂相加之和 例如:0101=12º+12²=5 第一位1基数2的索引0次幂+第三位1*基数2的2次幂等于5 其他进制计算等同 十进制转2进制:除2求余法 除2求余倒序表示 简便算法:记住2的10次... -
快速记住二进制的逻辑与、逻辑或、逻辑非、逻辑异或运算规则
2020-03-23 18:09:15逻辑与 (&&) :两者值都为1才取1,否则为0 逻辑或 ( || ):只要有1就取1,否则为0 逻辑非 ( ! ) :若是0,则取1,若是1,则取0 逻辑异或 (⊕):若两者值相同,则为0,若两者值不同,则为1 若能给你带来... -
二进制位运算的基本应用
2018-07-28 00:07:18因为最近在学习的过程中...今天就来系统上地学习一下二进制位运算的操作。 借鉴和简单转载: http://blog.sina.com.cn/s/blog_87b866180101lb55.html https://blog.csdn.net/qq_30076791/article/details/50571194 ... -
二进制,位运算(原码、反码、补码)
2021-02-23 13:10:521 二进制 2 原码、反码、补码 3 位运算符 4 位运算符使用技巧 上回学习运算符时,漏了位运算符,因为位运算符理解起来稍微有点复杂,所以要单独写一篇~ 要理解按位运算符,要先了解计算机进行存储和计算的底层逻辑。... -
二进制数及其运算
2020-07-28 08:14:13计算机的底层都是使用二进制数据进行数据流传输的,那么为什么会使用二进制表示计算机呢?什么是二进制数呢?如何使用二进制进行加减乘除?二进制数如何表示负数呢?本文将为你揭晓。 为什么用二进制表示 计算机内部... -
十进制的逻辑运算
2016-03-16 23:59:27十进制的逻辑运算, n&(n-1)的作用 -
二进制数的运算方法
2017-08-29 14:12:131.二进制数的算术运算 二进制数的算术运算包括:加、减、乘、除四则运算,下面分别予以介绍。 (1)二进制数的加法 根据“逢二进一”规则,二进制数加法的法则为: 0+0=0 0+1=1+0=1 1+1=0 (进位为1)... -
二进制与运算、或运算、非运算
2021-12-20 11:55:07"与"运算是计算机中一种基本的逻辑运算方式,符号表示为&,运算法则为遇0得0。也就是说只要有0,结果即为0。 举例 或运算 "或"运算符号表示为|,运算法则为遇1得1。也就是说只要有1,结果即为1。 举例 ... -
二进制逻辑运算符有关练习题
2017-11-25 10:51:52写一个函数返回参数二进制中 1 的个数 #include<stdio.h> int div = 0; //除数 int rem = 0; //余数 int count = 0; //计1 int count_one_bits(unsigned int div) { int con = 0; //商 while (div &... -
进制转换与位运算
2021-05-23 06:09:16以二进制“001”为例, 每一位都是一个bit。二进制只能由0/1组成,所以正好可以表示bit。什么是byte1个bit只能表示两种信号或者两种状态,表示的范围很小,例如英文字母26个就无法表示。所以规定8个bit一组作为一个...