偶数的最快方式 [英] Quickest way for even numbers

查看:120
本文介绍了偶数的最快方式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好!

我想检查一个数字是奇数还是偶数。我已经做了一个算法

但是我相信应该有一个更快的(可能是一个宏)。

这里有:


int iseven(int number)

{

int first;

int tempnum;


tempnum = number;


first = number>> 1;

number = first<< 1;


if(tempnum == number)

返回0;


返回1;

}

提前致谢

解决方案

Darksun4< da ******* @ yahoo.gr>写道:

我想检查数字是奇数还是偶数。我做了一个算法
但我相信应该有一个更快的算法(也许是一个宏)。
在这里它是:

int iseven(int number)
{
return!(number%2); }




或者:返回(数字& 1)^ 1


Ciao Chriss


Darksun4 aexpriméaveccécision:

我想检查数字是奇数还是偶数。我做了一个算法
但我相信应该有一个更快的算法(也许是一个宏)。
这里有:

int iseven(int number)


开头的标识符后跟小写字母保留为

未来的语言扩展名。


is_even()很好(另外,可读)。

{
int first;
int tempnum;

tempnum = number;

= number>> 1;


按位运算符只能使用无符号整数进行移植。

number = first<< 1;


如果你想快点,不要转移任何东西。

if(tempnum == number)
返回0;

返回1;
}
提前致谢



怎么样


int is_even(long数字)

{

返回((无符号长)数字& 0x1ul)== 0:

}




inline int is_even(long long number)

{

return(number& 0x1ull) == 0:

}


如果你有C99。


还要考虑函数的无符号版本


int is_even_ul(unsigned long number)





-

Emmanuel


Emmanuel Delahayeavaitprétendu:

inline int is_even(long long number)
{
返回(数字& 0x1ull)== 0:


返回((unsigned long long)数字& 0x1ull) == 0:

}




-

Emmanuel


Hi all!
I want to check whether a number is odd or even. I''ve made an algorithm
but I believe there should be a faster one ( maybe a macro ).
Here it goes :

int iseven ( int number )
{
int first;
int tempnum;

tempnum = number;

first = number >> 1;
number = first << 1;

if ( tempnum == number )
return 0;

return 1;
}
Thanks in advance

解决方案

Darksun4 <da*******@yahoo.gr> wrote:

I want to check whether a number is odd or even. I''ve made an algorithm
but I believe there should be a faster one ( maybe a macro ).
Here it goes :

int iseven ( int number )
{ return !(number % 2); }



Alternatively: return (number & 1)^1

Ciao Chriss


Darksun4 a exprimé avec précision :

I want to check whether a number is odd or even. I''ve made an algorithm
but I believe there should be a faster one ( maybe a macro ).
Here it goes :

int iseven ( int number )
Identifiers beginning with is followed by lowercases are reserved for
future language extensions.

is_even() is fine (and additionally, readable).
{
int first;
int tempnum;

tempnum = number;

first = number >> 1;
Bitwise operators only work portably with unsigned integers.
number = first << 1;
DOn''t shift anything if you want to go fast.
if ( tempnum == number )
return 0;

return 1;
}
Thanks in advance


What about

int is_even (long number)
{
return ((unsigned long) number & 0x1ul) == 0:
}

or

inline int is_even (long long number)
{
return (number & 0x1ull) == 0:
}

if you have C99.

Also consider an unsigned version of the functions

int is_even_ul (unsigned long number)

etc.

--
Emmanuel


Emmanuel Delahaye avait prétendu :

inline int is_even (long long number)
{
return (number & 0x1ull) == 0:
return ((unsigned long long) number & 0x1ull) == 0:
}



--
Emmanuel


这篇关于偶数的最快方式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆