方法1:采用求余方法% int a = 100;
bool b;
b = (a%2 ==0);
方法2:采用位逻辑符号& int a = 100;
bool b;
b = !(a&1); // 注意要取反
到底哪个速度快?
#include 'stdlib.h' // CPU 端分配内存给变量,显示不出<>,用引号替代
#include 'stdio.h' // printf
#include 'time.h' //clock_t
#include 'chrono'
using namespace std; // 必要,放在前
using namespace chrono; // 必要
int main()
{
int n = 200000;
int a[200000];
bool b[200000];
for (int i = 0; i < n; i++)
a[i] = i;
for (int i = 0; i < n; i++)
b[i] = true;
auto start = system_clock::now();
for (int i = 0; i < n; i++)
b[i] = (a[i] % 2 == 0);
auto end = system_clock::now();
auto duration = duration_cast(end - start);
printf('(CPU) cost time: %f ms', 1000 *
double(duration.count())*microseconds::period::num /
microseconds::period::den);
start = system_clock::now();
for (int i = 0; i < n; i++)
b[i] = !(a[i] & 1);
end = system_clock::now();
dur
bool b;
b = (a%2 ==0);
方法2:采用位逻辑符号& int a = 100;
bool b;
b = !(a&1); //
到底哪个速度快?
#include 'stdlib.h' // CPU 端分配内存给变量,显示不出<>,用引号替代
#include 'stdio.h' // printf
#include 'time.h'
#include 'chrono'
using namespace std; // 必要,放在前
using namespace chrono; // 必要
int main()
{
int n = 200000;
int a[200000];
bool b[200000];
for (int i = 0; i < n; i++)
a[i] = i;
for (int i = 0; i < n; i++)
b[i] = true;
auto start = system_clock::now();
for (int i = 0; i < n; i++)
b[i] = (a[i] % 2 == 0);
auto end = system_clock::now();
auto duration = duration_cast(end - start);
printf('(CPU)
start = system_clock::now();
for (int i = 0; i < n; i++)
b[i] = !(a[i] & 1);
end = system_clock::now();
dur
