如何确定一个数字是偶数还是非偶数

3436次浏览(过去30天)
迪夫r
迪夫r 2012年10月23日
编辑: 马特·J 2020年10月9日
我知道在C语言中,对于任何使用x%2的数字x,当x除以2时,它将计算余数,这将有助于破译其是否为偶数。
在matlab中怎么做呢?
3评论
史蒂文的主
史蒂文的主 2020年10月9日
所以 Inf 即使是吗?
>>s=(-1)^Inf
=
1
如何
>>s=(-1)^NaN
=
这对复数也成立吗?
>> N = 3+4i;
>>s=(-1)^N;%不等于-1

登录评论。

公认的答案

沃尔特·罗伯森
沃尔特·罗伯森 2012年10月23日
编辑:MathWorks支金宝app持团队 2018年11月9日
1评论
Dillen。一个
Dillen。一个 2020年2月5日
一个简单的例子:
A = [-2 -1 0 1 2 3 4 5 6];% A是你的值或矩阵
IS_偶数=~mod(A,2)
哪个和
IS_偶数=~bitget(abs(A),1)
IS_偶数=~rem(A,2)
你可以用 逻辑() 而不是 (isnot)用于ODD,如果你想要布尔值。也 比特 不适用于负整数,因此 abs()
一个警告;只有 比特 如果A中的元素不是整数,则将抛出错误!其他元素将输出分数的“奇数”。
除非你重复很多次,否则速度是无关紧要的。否则,您应该向量化。

登录评论。

更多答案(7)

简
2012年10月23日
注意例外情况:
NaN, Inf, 1e54, int8(-128)
此任务有一些FEX提交,例如:。 奇偶校验器

马特·J
马特·J 2012年10月23日
如果比特币(A,1)%奇怪的
其他的%甚至
结束
2的评论
乔什·迈耶
乔什·迈耶 2018年10月10日
在MATLAB的最新版本中, bitmax 被替换为 flintmax 。这是最大的连续浮点数。后 flintmax 的价值 EPS 大于1(以2的幂缓慢增加),因此可表示的数字大于 flintmax 不再是连续的。
所以,所有这些数字都是偶数的原因是 flintmax 是偶数,数与数之间的间距为 每股收益(flintmax)=2

登录评论。


路易斯·丰
路易斯·丰 2020年10月9日
伙计们,这是最简单的方法,就是高中的数学
N=1;%您想知道的号码是偶数还是奇数
创建一个表达式
s = (1) ^ N;
如果s = -1, N是奇数,否则N是偶数
如果s==-1
disp(“N是奇怪的”
其他的
disp(' N是偶数
结束

伊本e亚当
伊本e亚当 2020年2月18日
%查找偶数/奇数的函数
% n是这个函数的输入数字
作用输出= even_or_odd (n)
如果快速眼动(n, 2) = = 0
输出=偶数;
其他的
输出=奇怪;
结束
结束
4评论
马特·J
马特·J 2020年2月26日
不是用引号
我猜引号=单引号

登录评论。


安莫尔·辛格
Anmol辛格 2020年4月10日
编辑:Anmol辛格 2020年4月10日
给定的数字是偶数或奇数,因此我们使用&运算符。
如果任何数字是奇数,它必须有最右边的位1。
例子:
int i = 5;
二进制形式i=0101
现在使用&运算符
int j =我;[0101 & 1]/ /
这里j有0001;
1评论
沃尔特·罗伯森
沃尔特·罗伯森 2020年4月10日
这在MATLAB中不起作用
c=A&B
相当于
如果~ = 0
如果B ~ = 0
c = true;
其他的
c = false;
结束
elseifB ~ = 0
c = false;
其他的
c = false;
结束
是的,这可以提高效率,但这是&运营商的模型。更有效的操作是&&
注意,这不是按位运算。5&1不是二进制0101 & 0001给出0001:而是(5~=0)and (1 ~=0)
与您正在讨论的MATLAB等价的是bitand()运算符
比特兰德(5,1)
但如果你要这样做,你最好直接问最后一点:
bitget(5、1)%the 1是位号,LSB是#1

登录评论。


马特·J
马特·J 2020年10月9日
编辑:马特·J 2020年10月9日
还有一种方法可以测试标量中的偶数, 年代
isEven = false;
尝试,以表彰,“数字”“甚至”);isEven = true;结束

标签

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始打猎吧!