如何判断一个数字是否是偶数

3439次浏览(过去30天)
Divya R.
Divya R. 2012年10月23日
编辑: 马特J. 2020年10月9日
我知道在C语言中,对于任何数字x,使用x%2将计算x除以2时的余数,这将有助于破译它是否是偶数。
我如何在Matlab中这样做?
3评论
史蒂文勋爵
史蒂文勋爵 2020年10月9日
所以 甚至?
>> s = (-1)^Inf
s =
1
怎么样 还是
>> s = (-1)^NaN
s =
这也是一个复杂的数字吗?
>> n = 3 + 4i;
> s = (-1)^N;不等于-1

登录评论。

接受的答案

沃尔特·罗伯森
沃尔特·罗伯森 2012年10月23日
编辑:MathWorks支万博1manbetx持团队 2018年11月9日
国防部
1条评论
迪金
迪金 2020年2月5日
一个快速的例子:
a = [-2 -1 0 1 2 3 4 5 6];%a是您的值或矩阵
IS_EVEN = ~国防部(2)
这与
IS_EVEN = ~ bitget (abs (A), 1)
IS_EVEN = ~ rem (2)
您可以使用 逻辑() 代替 (ISNOT)对于奇数,您是否想要布尔值。还 bitget () 对负整数无效,因此 abs ()
尽管如此只要 bitget () 如果A中的元素不是整数,将抛出一个错误!其他的将输出“奇数”分数。
除非您将多次重复这一点,否则速度无关。否则,你应该矢量化。

登录评论。

更多的答案(7)

1月
1月 2012年10月23日
照顾例外:
Nan,INF,1E54,INT8(-128)
有一些FEX提交这个任务,例如。 FEX:奇偶校验检查

马特J.
马特J. 2012年10月23日
如果bitget (1)%奇怪
其他的%甚至
结尾
2评论
乔希梅尔
乔希梅尔 2018年10月10日
在最近的Matlab版本中, bitmax. 被取代了 flintmax 。这是最大的连续浮点数。后 flintmax , 的价值 每股收益 Is大于1(以2的幂慢慢增加),所以可以表示大于 flintmax 不再是连续的。
所以,这些数字都是偶数的原因是 flintmax 是偶数,数与数之间的间距是多少 每股收益(flintmax) = 2

登录评论。


Luis Fonseca.
Luis Fonseca. 2020年10月9日
这是Easiert Way Guys,它是来自Highschool的数学
N = 1;你想知道的数字是偶数还是奇数
%%创建表达式
s =(-1)^ n;
%%如果s = -1,则n是奇数,否则n是偶数
如果s = = 1
disp (N是奇数的
其他的
disp ('n甚至'
结尾

IBN E ADAM.
IBN E ADAM. 2020年2月18日
函数求偶数/奇数
%n是此功能的输入编号
函数输出= end_or_odd(n)
如果REM(n,2)== 0
输出=甚至;
其他的
输出=奇数;
结尾
结尾
4评论
马特J.
马特J. 2020年2月26日
不是倒的逗号
我猜倒逗号=单引号

登录评论。


Anmol辛格
Anmol Singh. 2020年4月10日
编辑:Anmol Singh. 2020年4月10日
对于给定的数是偶数还是奇数,我们使用&运算符。
如果任何数是奇数,它的右最大位必须是1。
例子:
int i = 5;
二进制形式i= 0101
现在使用&操作符
int j = i&1; [0101&1] //
这里j有0001;
1条评论
沃尔特·罗伯森
沃尔特·罗伯森 2020年4月10日
这在MATLAB中不起作用。在MATLAB中进行运算
c = A & B
相当于
如果a〜= 0
如果b〜= 0
c = true;
其他的
c = false;
结尾
eleesif.b〜= 0
c = false;
其他的
c = false;
结尾
是的,这可以做得更有效率,但这是模型&操作员。更有效的操作是&&
现在注意到这不是一个按位操作。5&1不是二进制0101 0001给出0001:而是(5〜= 0)和(1〜= 0)
与您所讨论的MATLAB等价的是位和()运算符
bitand(5、1)
但如果你要这么做,你可以直接问最后一点:
Bitget(5,1)%1是带有LSB为#1的位号

登录评论。


马特J.
马特J. 2020年10月9日
编辑:马特J. 2020年10月9日
还有一种测试标量的偶性的方法, S.
Iseven = false;
试一试validateattributes(年代,“数字”“甚至”);Iseven =真;结尾

标签

社区寻宝

找到Matlab Central中的宝藏,并发现社区如何帮助您!

开始狩猎!