如何找到一个数是否是偶数或不呢

1.637视图(30天)
我知道在C语言中,任何使用x % 2计算其余当x除以2,这将有助于破译其是否或不是。
我如何用matlab ?
3评论
史蒂文的主
史蒂文的主 2020年10月9日
所以 即使是吗?
> > s =(1) ^正无穷
s =
1
如何 吗?
> > s = (1) ^ NaN
s =
这对一个复数举行吗?
> > N = 3 + 4我;
> > s = (1) ^ N;%不等于1

登录置评。

接受的答案

沃尔特·罗伯森
沃尔特·罗伯森 2012年10月23日
编辑:MathWorks支万博1manbetx持团队 2018年11月9日
看到 国防部 快速眼动
1评论
Dillen.A
Dillen.A 2020年2月5日
编辑:Dillen.A 2020年2月5日
一个快速的例子:
一个= [2 1 0 1 2 3 4 5 6);%你的价值或矩阵
IS_EVEN = ~国防部(2)
这是一样的吗
IS_EVEN = ~ bitget (abs (A), 1)
和一样的
IS_EVEN = ~ rem (2)
您可以使用 逻辑() 而不是 ~ (不是)奇怪,你应该想要的布尔值。也 bitget () 不工作-整数,因此 abs ()
一个警告;只有 bitget () 将抛出一个错误如果一个元素不是一个整数!别人会输出“奇怪”分数。
除非你会重复很多次,速度是不相关的。否则,你应该vectorize。

登录置评。

更多的答案(8)

1月
1月 2012年10月23日
照顾例外:
南,正无穷,1 e54 int8 (-128)
有一些FEX提交任务,例如 FEX:奇偶校验检查

路易斯·丰
路易斯·丰 2020年10月9日
这是easiert人,刚从高中数学
N = 1;%数量你想知道奇数还是偶数
% %创建一个表达式
s = (1) ^ N;
% %如果s = 1, N是奇数,N是偶数
如果s = = 1
disp (N是奇数的)
其他的
disp (' N是偶数)
结束

马特·J
马特·J 2012年10月23日
如果bitget (1)%奇怪
其他的%甚至
结束
2的评论
乔什·迈耶
乔什·迈耶 2018年10月10日
编辑:乔什·迈耶 2018年10月10日
MATLAB在最近的版本中, bitmax 被取代了 flintmax 。这是最大的连续的浮点数。后 flintmax 的价值, 每股收益 大于1(2)慢慢增加权力,所以可表示的数字比吗 flintmax 不再连续。
因此,这些数字都是连的原因是 flintmax 是偶数和数字之间的间距是吗 每股收益(flintmax) = 2

登录置评。


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

登录置评。


Anmol辛格
Anmol辛格 2020年4月10日
编辑:Anmol辛格 2020年4月10日
一个givennumber是奇数还是偶数我们使用&操作符。
如果任何个数是奇数就必须有正确的大部分位1。
例子:
int i = 5;
二进制形式我= 0101
现在使用&操作符
int j =我;[0101 & 1]/ /
这里有0001;
1评论
沃尔特·罗伯森
沃尔特·罗伯森 2020年4月10日
这并不在MATLAB中工作。在MATLAB中,操作
c = A和B
相当于
如果~ = 0
如果B ~ = 0
c = true;
其他的
c = false;
结束
elseifB ~ = 0
c = false;
其他的
c = false;
结束
是的,这可以更有效率,但这模型&操作符。& &更高效的操作
现在请注意,这不是一个逐位运算。5 & 1不是二进制0101 & 0001给0001:取而代之的是(5 ~ = 0)和(1 ~ = 0)
MATLAB相当于你正在讨论的是bitand()运算符
bitand (5、1)
但是如果你要做的,你不妨问问过去直接:
bitget (5、1)% 1 LSB是# 1号

登录置评。


马特·J
马特·J 2020年10月9日
编辑:马特·J 2020年10月9日
一个方法来测试even-ness标量, 年代 ,
isEven = false;
试一试validateattributes(年代,“数字”,“甚至”);isEven = true;结束,

霍华德•林
霍华德•林 2021年10月15日
编辑:霍华德•林 2021年10月27日
testN = 10000000;
testvar =圆(兰德(testN, 1) * testN);
抽搐
output1 =快速眼动(testvar, 2);
toc
抽搐
output2地板(testvar / 2) = ~ = testvar / 2;
toc
抽搐
output3 = bitget (testvar, 1) = = 1;
toc
抽搐
output4 = (1)。^ testvar = = 1;
toc
以上生成的输出
> > testisoddspeed
运行时间是0.101100秒。
运行时间是0.010721秒。
运行时间是0.054311秒。
运行时间是0.040362秒。
编辑:AMD Ryzen 5800 h 2018 b上测试过。更新答案的情况下当你已经整数变量,这样你不需要演员。
testN = 10000000;
testvar =圆(兰德(testN, 1) * testN);
抽搐
output1地板(testvar / 2) = ~ = testvar / 2;
toc
testvar = uint32 (testvar);
抽搐
output2 =快速眼动(testvar 2) = = 1;
toc
抽搐
output3 = bitget (testvar, 1) = = 1;
toc
抽搐
output4 = (1)。^ testvar = = 1;
toc
结果
> > testisoddspeed
运行时间是0.014634秒。
运行时间是0.123930秒。
运行时间是0.013089秒。
运行时间是0.032953秒。
Bitget可以稍快。
11日评论
沃尔特·罗伯森
沃尔特·罗伯森 2021年10月28日
这是我使用的代码:
流(“1 \ n”);
小牛();
流(“2 \ n”);
小牛();
流(“3 \ n”);
小牛();
函数小牛();
testN = 10000000;
testvar =圆(兰德(testN, 1) * testN);
抽搐
output1 = mod (testvar, 2);
toc
抽搐
output2地板(testvar / 2) = ~ = testvar / 2;
toc
抽搐
output3 = bitget (uint32 (testvar), 1);
toc
抽搐
output4 = (1)。^ testvar = = 1;
toc
结束

登录置评。

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!

翻译的