MATLAB Answers

1

how to find out if a number is even or not

Asked by divya r on 23 Oct 2012
Latest activity Commented on by Jaimin Motavar on 5 Jul 2019
I know in C language, for any number x using x%2 will calculate the remainder when x is divided by 2, which will help decipher whether its even or not.
How can I do this in matlab?

  1 Comment

you can do it this in matlab by the very simple way by using implicit function rem(a,b) , where a is devided by b.
for example.
r1=rem(4,2)
r=0;
r2=rem(9,2)
r2=1;

Sign in to comment.

4 Answers

Answer by Thomas
on 23 Oct 2012
Edited by MathWorks Support Team on 9 Nov 2018
 Accepted Answer

You could perform a modulo division
mod(4,2) % Even number
ans = 0
mod(5,2) % Odd number
ans =1
Answer will be 0 for even number and 1 for odd number
Also try
mod(1:8,2)

  0 Comments

Sign in to comment.


Answer by Walter Roberson
on 23 Oct 2012
Edited by MathWorks Support Team on 9 Nov 2018
 Accepted Answer

See mod and rem

  0 Comments

Sign in to comment.


Answer by Jan
on 23 Oct 2012

Care for exceptions:
NaN, Inf, 1e54, int8(-128)
There are some FEX submission for this task, e.g. FEX: parity checker.

  0 Comments

Sign in to comment.


Answer by Matt J
on 23 Oct 2012

if bitget(A,1) %odd
else %even
end

  2 Comments

Matt J
on 23 Oct 2012
Note that solutions based on REM and MOD have certain non-robustness to large numbers, though I never quite understood why:
>> mod(bitmax+[1:8],2) %all are even
ans =
0 0 0 0 0 0 0 0
In more recent versions of MATLAB, bitmax was replaced by flintmax. This is the largest consecutive floating point number. After flintmax, the value of eps is larger than 1 (slowly increasing in powers of 2), so representable numbers larger than flintmax are no longer consecutive.
So, the reason all of those numbers are even is because flintmax is an even number and the spacing between numbers is eps(flintmax) = 2.

Sign in to comment.