功能如何运作!(n& 1),为什么!之前(),为什么n& 1,这是什么意思?

时间:2016-11-04 22:41:13

标签: c boolean

!如何运作,()之前为什么n & 1以及为什么#include <stdio.h> int even(int n) { return !(n & 1); } int main() { int pom, count=0,n; while(scanf("%d", &n)) { if(even(n)) { count++; } } printf("%d", count); return 0; }

import pandas as pd
from sqlalchemy.sql import text

ages = (25, 26, 27)
placeholders = ', '.join([':param'+str(i) for i in range(len(ages))])
paramdict = {'param'+str(i): ages[i] for i in range(len(ages))}

query = text("SELECT * FROM users WHERE age IN ({})".format(placeholders))
# SELECT * FROM users WHERE age IN (:param0, :param1, :param2)

df = pd.read_sql_query(query, conn, params=paramdict)

2 个答案:

答案 0 :(得分:1)

  • !是一个逻辑NOT运算符。当你传递一个零值时,你会得到一个;如果你传递非零值,你就会回零。
  • n & 1使用int屏蔽10000000000001具有二进制表示!(n & 1),即只设置最后一位
  • 偶数数字在最后一位数为零;奇数在最后一位有一个

现在,您可以看到公式return n % 2 == 0; 如何区分偶数和奇数。

判断数字是否均匀的另一种常见方法是通过2来检查可分性:

getRoute

答案 1 :(得分:1)

此函数使用按位&运算符来检查某些内容是否均匀。数字1以二进制表示为0001。如果在{32}二进制文件中存在141110的偶数,则114 & 1将为0。这是因为两个数字之间没有公共位

1 1 1 0 - 14
0 0 0 1 - 1
0 0 0 0 - 0 (No common bit)

!反转结果,使得0变为简洁的15并将其变为真正的整数。但是,如果数字是奇数,例如二进制为1111的{​​{1}},则会有一个公共数字和1111 & 1 = 1。这里显示

1 1 1 1 - 15
0 0 0 1 - 1
0 0 0 1 - 1

!1将真实1变成了虚假的0。规则是所有偶数& 1将为0,因为从不存在公共位,但所有奇数& 1将为1,因为始终存在公共位。当!反转按位运算符的结果时,您可以确定数字是偶数还是奇数。

编辑:我意识到反转一词可能含糊不清。我的意思是反转是它做到了这一点。如果!n,则0n != 00n == 0<EditText android:layout_width="match_parent" android:layout_height="match_parent" local:MvxBind="Text Login" /> public string Login { get { return _login; } set { SetProperty(ref _login, value); } }