精华内容
下载资源
问答
  • 交换值与交换律
    2022-05-10 23:05:39

    题目:交换两个int类型变量a,b的值


    方法一:使用第三个变量

    置换代码如下:

    public void swap(int a, int b){
        // 设定一个临时变量
        int temp;
    
        temp = a;
        a = b;
        b = temp;
    }

    方法二:使用异或运算符

    首先需了解异或运算符的运算方式和特性。

    • 异或运算符的运算方式:相同为0,不同为1。即,

            a = 11011

            b = 10101

    则,

            11011

         ^ 10101

        ————

            01110

          a^b = 01110 

    • 异或运算符的特性:
    1. 0和任何数异或都为此数,即,0^a = a
    2. 任何数和自己异或都为0,即,a^a = 0
    3. 满足交换律,即 a^b = b^a
    4. 满足结合律,即 a^b^c = a^(b^c)

    置换代码如下:

    public void swap(int a, int b){
        a = a^b;
        b = a^b;
        a = a^b;
    }
    

    解析说明,假设此时 a = 甲, b = 乙

    • 步骤一:运行 a = a^b,则此时,a = 甲^乙,;b不变,b = 乙
    • 步骤二:运行 b = a^b,则此时,a不变,a = 甲^乙;b = a^b = (甲^乙)^乙,根据异或运算的特性,b = 甲^(乙^乙) = 甲^0 = 甲
    • 步骤三:运行 a = a^b,则此时,a = a^b = (甲^乙)^甲 = 甲^甲^乙 = 0^乙 = 乙;b不变,b = 甲

    完成置换

    更多相关内容
  • 给出了8可交换随机变量的加权和n∑i=1 ani(Xi-EXi)在一定条件下的几个强大数定理,从而推广了 Marcinkiewicz强大数
  • leetcode136---异或运算的交换律

    千次阅读 2021-05-03 15:07:22
    异或运算性质: 交换律,即 a ^ b ^ c = a ^ c ^ b 结合律, 即 (a ^ b) ^ c = a ^ ( b ^c ) 对于任何数,都有 a ^ a = 0, a ^ 0 = a 自反性, a ^ b ^ b = a ^ 0 = a 思路 通过利用异或运算的交换律,相同的两个...

    leetcode136 —只出现一次的数字


    题目

    给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。

    说明:

    你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?

    示例 1:

    输入: [2,2,1]
    输出: 1
    示例 2:

    输入: [4,1,2,1,2]
    输出: 4

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/single-number


    方法

    1.位运算法

    异或运算性质

    异或是一种基于二进制的位运算,用符号XOR或者 ^ 表示,其运算法则是对运算符两侧数的每一个二进制位,同值取0,异值取1。它与布尔运算的区别在于,当运算符两侧均为1时,布尔运算的结果为1,异或运算的结果为0。

    异或运算性质:

    1. 交换律,即 a ^ b ^ c = a ^ c ^ b
    2. 结合律, 即 (a ^ b) ^ c = a ^ ( b ^c )
    3. 对于任何数,都有 a ^ a = 0, a ^ 0 = a
    4. 自反性, a ^ b ^ b = a ^ 0 = a

    思路

    通过利用异或运算的交换律,相同的两个整数异或后会为0,所以数组中的元素会两两相消,留下单独存在的元素。
    即 a ^ b ^ a = a ^ a ^ b = 0 ^ b = b
    所以对整个数组进行异或操作,结果即为所要查找的值。

    代码如下:

    class Solution:
        def singleNumber(self, nums: List[int]) -> int:
            # 异或运算
            result = 0
            for i in nums:
                result = result^i
            return result
    

    也可以通过lambda生成式简写如下:

    class Solution:
        def singleNumber(self, nums: List[int]) -> int:
            # 异或运算
            return reduce(lambda x,y: x^y, nums)
    

    reduce函数的语法如下:
    在这里插入图片描述
    复杂度分析

    • 时间复杂度:O(n), 遍历整个数组进行了常数次操作。
    • 空间复杂度:O(1), 只存在一个变量。

    这个方法还可以用于 给定数组中一个元素出现两次,其他都是一次,查找这个出现两次的元素问题。

    • 例如1到1000这种知道具体数字的,可以通过与1到1000依次进行异或,运算后的结果就为所求的值。

    2.字典 哈希表法

    • 通过enumerate函数遍历数组生成字典,即哈希表,按照数组的值作为字典的键,在数组中的出现次数作为值。
    • 字典完成后,遍历字典,找到值为1的键并返回,即找到了只出现一次的数字。

    代码如下:

    class Solution:
        def singleNumber(self, nums: List[int]) -> int:
            dict1 = {}
            for i, d in enumerate(nums):
                if d in dict1.keys():
                    dict1[d] += 1
                else:
                    dict1[d] = 1
            for key in dict1.keys():
                if dict1.get(key) == 1:
                    return key
    

    dict.get(key)函数返回字典中键为key的元素值。

    复杂度分析:

    • 时间复杂度:O(n), 遍历整个数组和字典进行了常数次操作。
    • 空间复杂度:O(n), 新生成了一个字典,长度大约为n/2。

    总结

    这道题最优解就是通过异或运算进行操作,只消耗了O(1)的空间。
    哈希表法消耗了更多的空间,没有异或法好。

    下面这个方法不消耗空间,但是非常消耗时间,是其他方法的十多倍,删除操作中找到对应元素d应该会很花时间,并且还要不断更新数组,不实用。

    class Solution:
        def singleNumber(self, nums: List[int]) -> int:    
            while True:
                d = nums[0]
                nums.remove(d)
                try:
                    nums.remove(d)
                except:
                    return d 
    
    
    展开全文
  • 是啊、 单位矩阵相当于代数中的1

    是啊、 单位矩阵相当于代数中的1
    根据矩阵的乘法定义,直接就有 AmnEn=A,EmAmn = A
    在这里插入图片描述

    展开全文
  • 针对传统的四元数乘法运算不满足交换律的问题,介绍了一种可交换四元数,同时建立一种交换四元数神经网络(CQVNN),并对CQVNN的渐近稳定性进行研究。研究过程中,将CQVNN分解成4个实神经网络,通过拓扑度理论、...
  • 三、基本等值式 基本运算规律 : 幂等律 : A⇔A∨AA \Leftrightarrow A \lor AA⇔A∨A , A∨A⇔AA \lor A \Leftrightarrow AA∨A⇔A 交换律 : A∨B⇔B∨AA \lor B \Leftrightarrow B \lor AA∨B⇔B∨A , A∧B⇔B∧AA...



    基于上一篇博客 【数理逻辑】命题逻辑 ( 命题与联结词回顾 | 命题公式 | 联结词优先级 | 真值表 可满足式 矛盾式 重言式 ) ;





    一、等值演算



    等值演算 :

    • 等值式
    • 基本等值式
    • 等值演算置换规则




    二、等值式



    等值式概念 : A , B A , B A,B 是两个命题公式 , 如果 A ↔ B A \leftrightarrow B AB 是永真式 , 那么 A , B A,B A,B 两个命题公式是等值的 , 记做 A ⇔ B A \Leftrightarrow B AB ;

    等值式特点 : A A A B B B 两个命题公式 , 可以 互相代替 , 凡是出现 A A A 的地方都可以替换成 B B B , 凡是出现 B B B 的地方都可以替换成 A A A ;


    证明 p → q p \to q pq ¬ p ∨ q \lnot p \lor q ¬pq 是等值式 ;

    p p p q q q p → q p \to q pq ¬ p ∨ q \lnot p \lor q ¬pq ( p → q ) ↔ ( ¬ p ∨ q ) (p \to q) \leftrightarrow (\lnot p \lor q) (pq)(¬pq)
    0 0 0 0 0 0 1 1 1 1 1 1 1 1 1
    0 0 0 1 1 1 1 1 1 1 1 1 1 1 1
    1 1 1 0 0 0 0 0 0 0 0 0 1 1 1
    1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

    写出两个命题公式的真值表 , 从而 计算 ( p → q ) ↔ ( ¬ p ∨ q ) (p \to q) \leftrightarrow (\lnot p \lor q) (pq)(¬pq) 的真值表 , 计算完成后发现其是 永真式 , 根据定义 , 这两个命题公式是等价的 , ( p → q ) ⇔ ( ¬ p ∨ q ) (p \to q) \Leftrightarrow (\lnot p \lor q) (pq)(¬pq) ;





    三、基本等值式




    基本运算规律 :

    • 1. 幂等律 : A ⇔ A ∨ A A \Leftrightarrow A \lor A AAA , A ⇔ A ∧ A A \Leftrightarrow A \land A AAA
    • 2. 交换律 : A ∨ B ⇔ B ∨ A A \lor B \Leftrightarrow B \lor A ABBA , A ∧ B ⇔ B ∧ A A \land B \Leftrightarrow B \land A ABBA
    • 3. 结合律 : ( A ∨ B ) ∨ C ⇔ A ∨ ( B ∨ C ) (A \lor B ) \lor C \Leftrightarrow A \lor (B \lor C) (AB)CA(BC) , ( A ∧ B ) ∧ C ⇔ A ∧ ( B ∧ C ) (A \land B ) \land C \Leftrightarrow A \land (B \land C) (AB)CA(BC)
    • 4. 分配律 : A ∨ ( B ∧ C ) ⇔ ( A ∨ B ) ∧ ( A ∨ C ) A \lor (B \land C) \Leftrightarrow ( A \lor B ) \land ( A \lor C ) A(BC)(AB)(AC) , A ∧ ( B ∨ C ) ⇔ ( A ∧ B ) ∨ ( A ∧ C ) A \land (B \lor C) \Leftrightarrow ( A \land B ) \lor ( A \land C ) A(BC)(AB)(AC)

    新运算规律 :

    • 5. 德摩根律 : ¬ ( A ∨ B ) ⇔ ¬ A ∧ ¬ B \lnot ( A \lor B ) \Leftrightarrow \lnot A \land \lnot B ¬(AB)¬A¬B , ¬ ( A ∧ B ) ⇔ ¬ A ∨ ¬ B \lnot ( A \land B ) \Leftrightarrow \lnot A \lor \lnot B ¬(AB)¬A¬B
      • 有了 与 ( ∧ \land ) 非 ( ¬ \lnot ¬ ) , 就可以表示 或 ( ∨ \lor )
      • 有了 或 ( ∨ \lor ) 非 ( ¬ \lnot ¬ ) , 就可以表示 与 ( ∧ \land )
    • 6. 吸收率 :
      • 前者将后者吸收了 : A ∨ ( A ∧ B ) ⇔ A A \lor ( A \land B ) \Leftrightarrow A A(AB)A
      • 后者将前者吸收了 : A ∧ ( A ∨ B ) ⇔ A A \land ( A \lor B ) \Leftrightarrow A A(AB)A ;

    0 , 1 0 , 1 0,1 相关的运算律 :

    • 7. 零律 : A ∨ 1 ⇔ 1 A \lor 1 \Leftrightarrow 1 A11 , A ∧ 0 ⇔ 0 A \land 0 \Leftrightarrow 0 A00
      • 1 1 1 是或运算的 零元 , 0 0 0 是与运算的 零元 ;
      • 零元 进行运算结果是 零元 ;
    • 8. 同一律 : A ∨ 0 ⇔ A A \lor 0 \Leftrightarrow A A0A , A ∧ 1 ⇔ A A \land 1 \Leftrightarrow A A1A
      • 0 0 0 是或运算的 单位元 , 1 1 1 是 与运算的 单位元
      • 单位元 进行运算结果是其 本身
    • 9. 排中律 : A ∨ ¬ A ⇔ 1 A \lor \lnot A \Leftrightarrow 1 A¬A1
    • 10. 矛盾律 : A ∧ ¬ A ⇔ 0 A \land \lnot A \Leftrightarrow 0 A¬A0

    对偶原理适用于上述运算律 , 将两边的 ∧ , ∨ \land , \lor , 互换 , 同时 0 , 1 0 ,1 0,1 互换 , 等价仍然成立 ;


    等价蕴含运算规律 :

    • 11. 双重否定率 : ¬ ¬ A ⇔ A \lnot \lnot A \Leftrightarrow A ¬¬AA
    • 12. 蕴涵等值式 : A → B ⇔ ¬ A ∨ B A \to B \Leftrightarrow \lnot A \lor B AB¬AB
      • 替换蕴含联结词 : 蕴含联结词 → \to 不是必要的 , 使用 ¬ , ∨ \lnot , \lor ¬, 两个联结词可以替换 蕴含联结词 ;
    • 13. 等价等值式 : A ↔ B ⇔ ( A → B ) ∨ ( B → A ) A \leftrightarrow B \Leftrightarrow ( A \to B ) \lor ( B \to A ) AB(AB)(BA)
      • 双箭头 ( 等价联结词 ) 可以理解成重分必要条件
      • A → B A \to B AB ( 蕴含联结词 ) 理解成 A A A B B B 的充分条件 , B B B A A A 的必要条件
      • B → A B \to A BA ( 蕴含联结词 ) 理解成 B B B A A A 的充分条件 , A A A B B B 的必要条件
      • 替换等价联结词 : 等价联结词 ↔ \leftrightarrow 不是必要的 , 使用 → , ∨ \to , \lor , 两个联结词可以替换 等价联结词 ;
    • 14. 等价否定等值式 : A ↔ B ⇔ ¬ A ↔ ¬ B A \leftrightarrow B \Leftrightarrow \lnot A \leftrightarrow \lnot B AB¬A¬B
    • 15. 假言易位 ( 逆否命题 ) : A → B ⇔ ¬ B → ¬ A A \to B \Leftrightarrow \lnot B \to \lnot A AB¬B¬A
      • A A A 称为 前件 , B B B 称为 后件 ( 结论 ) ;
    • 16. 归谬论 ( 反证法 ) : ( A → B ) ∧ ( A → ¬ B ) ⇔ ¬ A ( A \to B ) \land ( A \to \lnot B ) \Leftrightarrow \lnot A (AB)(A¬B)¬A
      • 这是反证法的原理 , 由 A A A 推导出 B B B ¬ B \lnot B ¬B , B B B ¬ B \lnot B ¬B 是矛盾的 , 则 A A A 是错的 , ¬ A \lnot A ¬A 是对的 ;




    四、基本运算



    基本运算 :

    等价等值式 : 等价联结词 ↔ \leftrightarrow 不是必要的 , 使用 → , ∨ \to , \lor , 两个联结词可以替换 等价联结词 ;

    蕴含等值式 : 蕴含联结词 → \to 不是必要的 , 使用 ¬ , ∨ \lnot , \lor ¬, 两个联结词可以替换 蕴含联结词 ;

    德摩根律 :

    • 有了 与 ( ∧ \land ) 非 ( ¬ \lnot ¬ ) , 就可以表示 或 ( ∨ \lor )
    • 有了 或 ( ∨ \lor ) 非 ( ¬ \lnot ¬ ) , 就可以表示 与 ( ∧ \land )

    因此得出结论 , 与非 或者 或非 ( 二选一 ) , 可以表示所有的命题 ;





    五、等值演算



    证明 p → ( q → r ) p \to ( q \to r ) p(qr) ( p ∧ q ) → r (p \land q) \to r (pq)r 是等价的 ;


    证明上述两个命题是等价的 , 有两种方法 :

    • 一个是列出 真值表
    • 另外一个就是进行 等值演算

    p → ( q → r ) p \to ( q \to r ) p(qr)

    使用 蕴含等值式 , 进行置换 : 将 q → r q \to r qr 置换为 ¬ q ∨ r \lnot q \lor r ¬qr

    ⇔ p → ( ¬ q ∨ r ) \Leftrightarrow p \to ( \lnot q \lor r ) p(¬qr)

    继续使用 蕴含等值式 , 将外层的蕴含符号置换 :

    ⇔ ¬ p ∨ ( ¬ q ∨ r ) \Leftrightarrow \lnot p \lor ( \lnot q \lor r ) ¬p(¬qr)

    使用 结合律 , 将 p , q p, q p,q 结合在一起 :

    ⇔ ( ¬ p ∨ ¬ q ) ∨ r \Leftrightarrow ( \lnot p \lor \lnot q ) \lor r (¬p¬q)r

    使用 德摩根律 , 将 ¬ \lnot ¬ 提取到外面 :

    ⇔ ¬ ( p ∧ q ) ∨ r \Leftrightarrow \lnot ( p \land q ) \lor r ¬(pq)r

    使用 蕴含等值式 , 进行置换 ;

    ⇔ ( p ∧ q ) → r \Leftrightarrow (p \land q) \to r (pq)r

    展开全文
  • 信号系统实验2.doc

    2021-04-25 12:02:00
    信号系统实验--系统的时域分析实验目的熟悉和掌握常用的用于系统时域分析的MATLAB函数。掌握连续时间系统零状态响应的求解掌握离散时间系统零状态响应的求解掌握时间系统单位脉冲响应的求解。实验器材 软件、...
  • " ^ "——异或运算,二元...那么如何不用临时变量去交换两个数的呢,那么就可以利用0和任何数异或都为这个数本身,任何数和本身异或都为0,这个性质来交换两个数的,举个例子: public static void main(String
  • 信号系统实验2..doc

    2021-04-25 12:02:01
    信号系统实验2.信号系统实验系统仿真实质上就是对系统模型的求解,对控制系统来说,一般模型可以转化成某个微分方程或养分方程表示,因此在仿真过程中,一般以某种数值算法从初态出发,逐步计算系统的响应,最后...
  • JAVA 通过 ^ (亦或)...我们将交换值的代码分别记为 1 2 3 式。使用离散数学符号来进行运算。下面式子中出现的 ⊕ 等同于代码中的 ^ 将1式带入2式中: b = (a⊕b) ⊕ b; 由于⊕运算满足结合,所以上式可写为: b
  • 并且异或满足交换律和结合律,即异或式的式中各因子的个数有关,位置无关 又因为异或本身是位运算符,不产生进位则我们能进一步得到以下结论: 对于等长多位(字节)变量a,b,有: a^a=0; a^0=a;b^0=b;...
  • 交换两个int类型数字的,最简单的方式就是使用一个临时变量 1 public static void swap1(int[] A, int i, int j) { 2 int temp = A[i]; 3 A[i] = A[j]; 4 A[j] = temp; 5 } 如果不使用临时变量,我...
  • 异或运算又称为无进位相加。相同为0,不用为1 有两个性质: 1. 0^ N=N 2. N^N=0 异或运算满足交换律和结合律
  • 连续时间信号,是指自变量的取值范围是连续的,且对于一切自变量的取值,除了有若干不连续点以外,信号都有确定的值与之对应的信号。从严格意义上来讲,MATLAB并不能处理连续信号,在MATLAB中,是用连续信号在等...
  • 要求不创建临时变量,来交换a,b的,问有几种办法首先先来一个创建临时变量交换的 相信大家也都会,哈哈哈,就不多讲了接下来这种就是加减法,用数学的思维来解决问题 ...3.3 异或运算满足交换律,结合律 :...
  • 算法 通过异或运算交换两个数 ...异或运算满足结合律, 交换律 x ^ x = 0 x ^ 0 = x 设x1 = a,x2 = b x1 ^= x2 x1: a ^ b x2: b x2 ^= x1 x1: a ^ b x2: b ^ a ^ b = a x1 ^= x2 x1: a ^ b ^ a = b x2: a ...
  • 两个数交换算法

    2021-06-24 07:27:29
    两个数交换算法(包含不用第3个变量而直接交换的情况)2006-12-17 20:07对两个数进行交换,在C中可采用指针实现,而在C++可使用引用来实现,无论是用指针还是引用,都要借助第3个变量。本文将介绍两种直接交换的 算法*...
  • 想了解更多数据结构以及算法题,可以关注...一般情况下交换两个数字的,我们都会使用一个临时变量,像下面这样 1 private void swap(int[] array, int i, int j) { 2 int temp = array[i]; 3 array[i] = array...
  • 循环输入两个数a 和 b,交换两者的后输出 a 和 b。当没有任何输入时,结束程序。 解题思路 最基础的方法就是引入临时变量从而实现两个数字的交换,除此之外,其实还有别的方法,我们来一起看看。 解题代码 解法...
  • 两个变量的值交换的多种方法

    千次阅读 2016-09-01 20:48:53
    在我的博客“函数参数的传递”(博客地址:http://blog.csdn.net/wxbmelisky/article/details/50833787)一文中谈到过将两个变量的进行交换的 swap 函数实现,它们分别是通过指针和引用并使用中间变量来实现的,...
  • 假如有x、y两个数,如何在不占用任何额外空间的情况下交换两个数的? 思路 平时我们在交换两个数的时,往往会用一个中间数temp来实现效果,现在需要不占用任何额外空间,自然就不能使用这种寻常的方法了;这里...
  • 集合、关系的性质、交换分配格的相关证明题

    千次阅读 多人点赞 2020-11-26 00:07:05
    ④对∀x∈Z,都有4-x使得x○(4-x)=(4-x)○x=2,所以(Z,○)有逆元inverse,也就是说(Z,○)是一个群 ⑤对∀x,y∈Z,x○y=x+y-2,y○x=y+x-2,得出x○y=y○x,所以(Z,○)满足交换律 综上所述:(Z,○)是交换群 (相关知识...
  • 简单来说就是一句话:相同为0不同为1,那么一个数和自身作异或运算将等于0 另外异或还有两个很重要的性质:交换律和结合律:a^b = b^a,a^b^c = a^(b^c),这两个性质后面会用到。 然后分析一下上面三行代码的运算过程。...
  • 强者越强-效率公平的幂视角

    千次阅读 2021-10-28 09:22:06
    一直以来,人们认为复杂网络的内在是泊松分布,但事实上却是幂分布。是不是所有基于泊松分布的统计复用需要重新评估呢?比如分组交换网的拥塞控制?但这是后话,本文不谈,本文主要内容是效率和公平。 以无标度...
  • 【第18天】给定两个变量 a 和 b,交换它们的 | 三种解法
  • 加法交换律3.异或操作符4.python写法 0.目的 看到了<小学生Vita老师>的视频感觉很好玩,因此仅对视频内容做补充和记录 1.临时变量 a;a b:b int t=a; -> a : a b : b t : a a=b; -> a : b b :...
  • ^ 也叫无进位相加,原理是相同为0不同为1,当我们把两个数进行二进制异或运算时,比方说a = 100011,b = 011010,此时 a^...3. a^b = b^a ,a^b^c = a^(c^b) 异或满足交换律和结合律 看如下代码分析为什么异或可以交换...
  • 我们来看个具体的例子:15 ^ 15 15 对应的二进制位: 01111 ,那么 15 ^ 15 的运算则是 N ^ 0 = N 一个值与 0 做异或运算,得到的结果仍是这个 例如:15 ^ 0 = 15 N ^ M = M ^ N 同加法有交换律、乘法也有交换律...
  • 设有int型两个变量 a和b,不借助于临时变量可用异或法交换两个变量的,注意这里的异或为位异或...可以实现两个变量值得交换,已知异或操作满足交换律和结合律,a^a=0,0^a=a;故而上述操作解释为:  a = a ^ b (1);
  • 交换两个变量ab的

    千次阅读 2017-07-07 16:25:54
    问题:交换两个变量ab的,并输出交换后的。 一开始遇到这道题,我的基本想法就是定义一个新的变量c作为中间变量,让c=a,a=b.b=c就可任意完成这个问题了。程序代码如下:   #include&lt;stdio.h&...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,077
精华内容 5,630
热门标签
关键字:

交换值与交换律