C/C++中位与运算讨论奇偶

& 按位与 如果两个相应的二进制位都为1,则该位的结果值为1,否则为0

int fun(int n)
{
      return  (n&1);       //返回1表示奇数,0表示偶数。
}

根据位与的运算规则,如果两个相应的二进制位都为1,则改为的结果值为1,否则为0.而n&1,其实关键在于最后一位二进制位,它决定着n是奇数还是偶数。即n与1进行位运算无论n有多少位,只要最后一位是1,最后一位是1则意味着n一定是个奇数(2k+...+1一定是奇数),此时与1进行位与运算返回值是1;否则返回值是0,则表示n是偶数。位运算比%运算更加快捷,学会使用位与运算判断奇偶。

总之记住:n&1返回值是1则表示n是奇数,返回值是0则表示n为偶数。

时间: 2024-11-01 23:12:42

C/C++中位与运算讨论奇偶的相关文章

Caffe 中卷积运算的原理与实现

caffe中卷积运算设计的很巧妙,今天就来讨论一下caffe中卷积运算的原理,最后会给出一个自己的实现版本,便于初学者理解. Caffe中卷积运算的原理 俗话说,一图胜千言,首先先给出原理示意图,为了方便,这里以二维核为例 滑动窗口在图像中每滑动一个地方,将图像中该滑动窗口图像展开为一列,所有列组成图中的滑动窗口矩阵,这里假设pad=1,stride=1,K=3,则滑动窗口矩阵每行大小为W*H,一共K*K行. 每个核展开为一行,N个核形成的核矩阵大小为N*K*K. 最后将核矩阵和滑动窗口矩阵相乘

js中位运算的运用

原文:js中位运算的运用 我们可能很少在编程中用位运算,如果没深入学习,可能也很难理解.平时的数值运算,其实是要先转换成二进制再进行运算的,而位运算就是直接进行二进制运算,所以位运算的执行效率肯定是更高的.下面通过一些实例来加深对位运算的理解. 按位与(&) &&运算符我们都知道,只有两个都为真,结果才为真.&道理是一样的,只有两个数的值为1时,才返回1.例如1和3的按位与操作: 0001 & 0011 --------- 0001 只有对应的数为1时,结果才为1,

让hql支持按位与运算

一.背景 工作中,使用的数据库为MySQL,项目使用的语言为java,采用了JPA技术,底层用的是hibernate,项目中有些需要进行按位与运算,但是hql语言确不支持,该文章描述了如何让我们的程序支持按位与的操作 二.实现 首选实现SQLFunction接口 package com.XXXX.hql; import java.util.List; import org.hibernate.QueryException; import org.hibernate.dialect.functio

原码, 反码, 补码 详解以及负数的按位与运算

本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希望本文对大家学习计算机基础有所帮助! 一. 机器数和真值 在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念. 1.机器数 一个数在计算机中的二进制表示形式, 叫做这个数的机器数.机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1. 比如,十进制中的数 +3 ,计算

java中变量运算细节 (2)

/* 目的:测试变量的运算方式 结果:byte a, b, c; a = b+c; 或者 a = b+10 形如这种形式的算式, 等式的右边的运算结果默认的都是int型的!因为等式右边有变量, 编译器无法确定变量的内容 ,因为它是变量!所以相加之后得到的int再默认强制转换成byte可能会损失精度. 而形如 a=4+5:这种常量的赋值,虽然 4 和 5 都默认的是int, 但都是常量,它们的值是确定的!所以如果 4+5的值超过了 byte的最大值的范围, 那就会编译出错!(也就是等式右边都是常量

php中位运算的应用:货品的状态

效果如下图: 分析:用一个整数的二进制可以记录32状态 00000000 00000000 00000000 00000000  >>=0 从右往左保存这三个的状态: 精品选中,第一位设置为1: 00000000 00000000 00000000 00000001 >>=1 新品选中,第一位设置为1: 00000000 00000000 00000000 00000010 >>=2 热销选中,第一位设置为1: 00000000 00000000 00000000 00

sas宏(3)宏,调试宏,创建带参数的宏,理解符号表(全局宏与局部宏解析),宏条件运算符,在宏中进行运算

宏类似于c中的函数,传入指定参数后执行,并且宏内部可以包含data步程序和条件运算符号. 宏变量只是小小的变量....(by the way作用也很大) 1:宏的基本语法 如何创建一个简单的宏并使用? %macro prtlast; proc print data=&syslast (obs=5); title "Listing of &syslast data set"; run; %mend; %prtlast /*不要加分号,加了有可能出错*/ 宏创建过程中做了什

js中的==运算: [''] == false —>true

图1 计算下面表达式的值: [''] == false 首先,两个操作数分别是对象类型.布尔类型.根据图1,需要将布尔类型转为数字类型,而false转为数字的结果是0,所以表达式变为: [''] == 0 两个操作数变成了对象类型.数字类型.根据图1,需要将对象类型转为原始类型: 首先调用[].valueOf(),由于数组的valueOf()方法返回自身,所以结果不是原始类型,继续调用[].toString(). 对于数组来说,toString()方法的算法,是将每个元素都转为字符串类型,然后用

JS中delete运算

var a={x:1,y:2,z:3}; var b=[1,2,3]; delete a.x; delete b[0]; $("p").text(1 in b); alert(0 in b);// false角标为0的元素已经被删除了 alert("x" in a);// false x已经被删除 console.log(typeof(a.x));//undefined console.log(typeof(a.y));//number alert(b.length