首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C的|、||、&、&&、、~、!运算 运算

运算符有: &(按与)、|(按)、^(按)、~ (按取反)。 ~取反为单目,其余都是双目运算符。...1,该位的结果值为1 ^ 按 若参加运算的两个二进制值相同则为0,否则为1 ~ 取反 ~是一元运算符,用来对一个二进制数按取反,即将0变1,将1变0 << 左移 用来将一个数的各二进制全部左移...若要把这结果赋给变量j,可写成: j = 017|j (3)按运算符(^) 按运算将两个运算分量的对应遵照以下规则进行计算: 0 ^ 0 = 0, 0 ^ 1 = 1, 1 ^ 0 =...运算的意思是求两个运算分量相应值是否相异,相异的为1,相同的为0。按运算的典型用法是求一个串信息的某几位信息的反。...如欲求整型变量j的最右4信息的反,用逻辑运算017^j,就能求得j最右4的信息的反,即原来为1的,结果是0,原来为0的,结果是1。

1.4K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    与(&)、(|)、(^) – 运算详解

    运算,在平时的使用频率不是很高,大部分人都很少用到,以至于对位运算的理解也是比较模糊。 下面就来详细说说,这些平时不常用的运算符究竟应该怎么用,以及有什么需要注意的事项。...使用运算来判断,在某种程度上也可以减轻数据库存储数据的压力(嗯,这个作用目前还感觉不明显),废话不多说,客观继续往下看(老鸟请留情,谢谢) 运算符 描述信息我已经尽量用比较好理解的方式修改,官方的实在是有点儿绕...,寄希望下次看到的时候能立马想起来而不是再去理解一次 运算符 含义 描述(运算,基于二进制表示) 示例 & 按与 只有参与运算的两均为1时,结果才为1,否则为0 a与b:$a & $b | 按...只有参与运算的两均为0时,结果才为0,否则为1 ab:$a | $b ^ 按 只有参与运算的两不同时,结果才为1,否则为0 ab:$a ^ $b ~ 按非(取反) 将用二进制表示的操作数中为...,1&1=1 A&B运算结果:1(d)=00000001(b) 按(|) 规则:0|0=0,0|1=1,1|0=1,1|  1=1 A|B运算结果:89(d)=01011001(b) 按(

    1.6K20

    运算的秒用--运算

    先不要着急,咱们来一点一点的分析 运算 想要看懂上面的代码,首先你得知道什么叫运算。 先看定义 如果a、b两个值不相同,则结果为1。如果a、b两个值相同,结果为0。(这特么是啥?)...没明白没有关系,咱们接下来看例子 举个例子 比如a=5,b=3 首先 你得把a和b转换成二进制,那么a=101, b= 011 然后a和b进行运算,一的去对比,如果值相同,则对应位置运算的结果为...0,如果值不同,则对应位置运算的结果为1 运算示意图 所以a和b的运算的结果为 110 也就是6 运算也可以按照另外一个角度去理解,就是「无进位的加法」,其实也就是二进制的相加,但是加完的结果不进位而已...运算的特点 0和任何数N进行运算,结果为N 其实这个很好理解,任何数转换成二进制,每一上的数字要么是0,要么是1,而和0进行,以前是0的位置和0相同,则结果为0,以前是1的位置和0不同,则结果为...1,所以运算之后结果是没变的,如下图 任何数和0进行运算 任何数N和自己进行运算,结果为0 这个也很好理解,N^N每一肯定都会是一样的,根据运算的法则,结果肯定每一都为0 任何数和自己进行运算

    43310

    c语言中按运算,^按运算符「建议收藏」

    ^表示按运算符,顾名思义,相异,即不同则为1,反之为0 例如15和16进行运算运算过程如下:15 0000 0000 0000 0000 0000 0000 0000 1111 16...0000 0000 0000 0000 0001 0000 ^ —————————————— 0000 0000 0000 0000 0000 0000 0001 1111 可以看到,经过按运算后...,其结果变成十进制应为31,大家务必弄清楚运算过程,然后再上机验证,代码如下:#include int main() { int a; a=15^16; printf(“a=%d\n”,a); return...0; } 运算结果为:a=31 运算符的作用指定位数的翻转 如想对某个数字的低4进行翻转,则可以将这个数字与15(二进制为00001111)进行按运算,既可以将原数字的低四进行翻转,即高四不变...,低四0变1,1变0 与0还是原值 大家可以自行实验,一个数字与0进行,结果还是原值 交换两个数字 除了之前我们学习交换两个数字需要第三个变量做中介之外,如今可以通过运算进行,代码如下:#

    1.2K20

    运算符有哪些_运算运算

    运算符的计算主要用在二进制中。 实际开发中也经常会遇到需要用到这些运算符的时候,同时这些运算符也被作为基础的面试笔试题。 所以了解这些运算符对程序员来说是十分必要的。...与(&)运算运算进行的是这样的算法: 0&0=0,0&1=0,1&0=0,1&1=1 在与运算中两个开关是串联的,如果我们要开灯,需要两个开关都打开灯才会打开。...理解为A与B都打开,则开灯,所以是1&1=1 任意一个开关没打开,都不开灯,所以其他运算都是0 通俗理解为A(与)&B都开则开,否则关 非(~)运算运算即取反运算,在二进制中1变0,0变1 110101...进行非运算后为 001010即1010 (|)运算 运算进行的是这样的算法: 0|0=0,0|1=1,1|0=1,1|1=1 在运算中两个开关是并联的,即一个开关开,则灯开。...理解为A()|B任意开则开 (^)运算 运算通俗地讲就是一句话 同为假,为真 所以它是这样的算法: 0^0=0,0^1=1,1^0=1,1^1=0 版权声明:本文内容由互联网用户自发贡献

    54410

    C语言 按运算

    运算: 规律:无论01,1取反,0不变 变量交换: 题一:给定两个数 a 和 b ,用运算交换它们的值。...思路: 1)中间量t = a^b 2) b = tb,相当于abb,根据性质知道ab^b = a,所以b = t^b就是b = a (性质:两次不变) 3)a = t^a,道理同上...思路: 根据的性质,两个一样的数结果为零。也就是所有出现偶数次的数都为零,那么把这 n 个数都一下,得到的数就一定是一个出现奇数次的数了。...这里最终偶数次的数偶数次的偶数结果为0,0再奇数次的数结果为其本身,就是这个道理 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/141615.html原文链接

    1.3K30

    java按运算是,深入理解按运算

    任何数取反 (3) 任何数自己=把自己置0 按的几个常见用途: (1) 使某些特定的翻转 例如对数10100001的第2和第3翻转,则可以将该数与00000110进行按运算。...说明 ^ 运算符查看两个表达式的二进制表示法的值,并执行按。...运算就是二进制整数运算啦. 两个数按意思就是从个位开始,一的比....如果两个数相应的上一样,结果就是0,不一样就是1 所以111^101=010 那加密的过程就是逐个字符跟那个secret字符运算....解密的过程就是密文再跟同一个字符运算 010^101=111 至于为什么密文再次就变原文了,这个稍微想下就知道了.. posted on 2013-07-18 18:55 奋斗成就男人 阅读(158

    92720

    与、运算方法

    运算符(|) 参加运算的两个对象,按二进制进行“运算。...另,负数按补码形式参加按运算。 “运算”特殊作用: (1)常用来对一个数据的某些位置1。 方法:找到一个数,对应X要置1的,该数的对应为1,其余为零。此数与X相或可使X中的某些位置1。...例:将X=10100000的低4置1 ,用 X | 0000 1111 = 1010 1111即可得到。 运算符(^) 参加运算的两个数据,按二进制进行“运算。...“运算”的特殊作用: (1)使特定位翻转找一个数,对应X要翻转的各位,该数的对应为1,其余为零,此数与X对应即可。...例:X=10101110,使X低4翻转,用X ^ 0000 1111 = 1010 0001即可得到。 (2)与0相,保留原值 ,X ^ 0000 0000 = 1010 1110。

    2.3K30

    取反~运算_按与按运算

    取反~运算 首先我们来看按取反的概念 按取反运算符:对数据的每个二进制取反,即把0变成1,把1变成0....即~x=-x-1 这里按照定义 9的二进制为00001001 其按取反为11110110 结果为-10 这个过程没有任何问题,但是如果忘记了负数的二进制表达方式,就会对这个结果产生疑问,为什么11110110...理解按取反的关键是理解11110110为什么表示-10,也就是负数的二进制表达方式。 现在计算机普遍使用补码表示负数。 知道补码,求源码的方式是:值取反再加1。...补码的第一符号决定了源码的正负,第一为0源码为正,第一为1源码为负。 现在我们可以理解上面那个例子,9按取反后得到11110110,其第一为1,源码为负值。

    1.7K10

    java中的运算符_java按

    a=a^b; b=a^b; a=a^b; System.out.println("a="+a+",b="+b); } 第一种:用真实值计算 ^是运算符...,的规则是转换成二进制比较,相同为0,不同为1....一个数a与另一个数b的结果等于a^b,用结果( a^b)a,就会得到b; 上面的结果,我们用代码来验证。代码( a=a^b; b=a^b; a=a^b;)可以转换成二进制计算。...a=a^b; ————-11=01^10 第三步,a(01)b(10),等于11。转为十进制a等于3. 最后打印出来,a等于3, b等于2. 第二种:用规则计算。 (规则:可以移动。...相同数等于0,任何数0等于本身) 第一步没变化,直接代入后面的代码进行计算。 第二步中b=a^b的 a^b转化为 a^b ^b ,其中让b^b等于0, a^0等于a。

    1.9K10

    运算的常见用法总结

    (^) 这个位操作运算符相信大家一定都不陌生,这个运算符可以用来解决很多普通算法解决不了的问题,而且运算是直接对二进制码做运算,相对普通的加减乘除运算符来说的话更加的高效,我们借着题目一起来看看。...解法思路 的三个点顺下来,就可以很清楚地解这道题: 运算和乘法一样,位置和运算顺序不影响最后结果:a^b^c = b^c^a 两个相同的数做运算结果为零:a^a = 0 任何数和零做结果还是这个数本身...解法思路 这题的主要难点是如何把两个数给拆出来,如果直接运用算法,我们最后得到的结果是两个数做的结果,关键点是如何基于这个的结果来找到这两个数,有一点很重要的就是,的结果为 1 的点只会出现在其中一个数中...,我们可以用其中一个为 1 的点作为判断依据,这个点存在的所有数在一起做,这个点不存在的所有数一起做,这样就把这个问题拆解成了两个 problem 3。...,或在位运算中的应用非常广,但是这里的难点是我们平时可能会忽视运算,导致我们遇到一般的问题不会往运算的方向去想,另外就是如果对二进制的运算不熟,我们也很难理解一些运算的综合操作,这里提到了或可以交换两个数

    1.3K50

    运算的秒用--运算面试真题

    前言 上次咱们聊了聊运算的妙用,其实简单来说,就是记住运算的三个特性 0和任何数N进行运算,结果为N 任何数N和自己进行运算,结果为0 运算满足交换律和结合律 当然如果您对这几个特性不是很了解...,或者不是很熟悉运算的话,建议先看看这篇文章 运算的妙用--运算 「闲话不用多说,咱们来看面试真题」 Q1:一个数组中有一种数出现了奇数次,其他数都出现了偶数次,怎么找到这一个数 「要求:时间复杂度...所以咱们必须得换个思路 利用运算的规律来解题 首先,在运算中「任何数N和自己进行运算,结果为0」,所以我们把数组中的所有数进行运算,所有「出现偶数次的数字进行运算结果为0」,咱们来看一个例子...比如看上述数组,咱们来对每个元素进行运算 temp = a ^ b ^ b ^ c ^ c ^ c ^ c ^ d ^ d 因为「任何数N和自己进行运算,结果为0」所以除了a以外的数字,结果为...0 所以全部进行运算一次的结果为 temp = a^0 其实简单的说就是两个b结果为0,两个c结果是0(上面的case写了4个c,其实结果是一样的),两个d结果为0,那么所有的数字下来

    28620
    领券