我试着理解这个表达:
static Func<int, bool> isOdd = i => (i & 1) == 1;
但这是什么意思?
例如我有i = 3.然后(3&amp; 1)== 1
或i = 4.然后(4&amp; 1)== 1
我不明白这一点。它如何确定它何时是奇数还是何时是偶数。
用这种方法:
public static void Hallo2()
{
for (int i = 0; i < 10; i++)
{
if (isOdd(i))
Console.WriteLine(i + " is odd");
else
Console.WriteLine(i + " is even");
}
}
谢谢
答案 0 :(得分:4)
from urllib2 import urlopen as uReq
from bs4 import BeautifulSoup as soup
import requests
import re
my_url = "https://www.newegg.com/Product/ProductList.aspx?Submit=StoreIM&IsNodeId=1&bop=And&Depa=1&Category=38&Page=2&PageSize=12&order=BESTMATCH"
uClient = uReq(my_url)
page_html = uClient.read()
uClient.close()
page_soup = soup(page_html, "html.parser")
containers = page_soup.findAll("div",{"class":"item-container"})
container = containers[0]
for container in containers:
title_container = container.findAll("a",{"class":"item-title"})
product_name = title_container[0].text
print("product_name: " + product_name)
是按位AND操作.net使用32位整数但是对于这个例子,我将使用4位,左位是最低有效位。
操作3&amp; 1.查看二进制数字1100和1000,并输出两个值的数字。 1000 = 1。
4&amp; 1是0010和1000所以0000 = 0
它基本上检查第一个(或最低有效位)是否为1,如果我们知道该数字是奇数。
答案 1 :(得分:1)
尝试将其转换为位,以便您可以将其可视化:
3 = 0011
,而1 = 0001
。因此0011 & 0001
会产生0001
如果你做了3&amp; 2 == 2你也会得到真实,因为0011 & 0010
会产生0010
同样,8&amp; 2 == 2将导致false,因为8是0100
而2是0010
,所以按位的结果将是0000
。
答案 2 :(得分:1)
你错了&amp;二元和二元逻辑运算符按位运算符。
或i = 4.然后(4&amp; 1)== 1
这不是真的,因为二进制格式的4是0b100,当你用二进制计算时,你会得到0b100 & 0b001 == 0;
同样适用于3 & 1
将导致0b11 & 0b01 == 1
。因此,方法按预期工作。因为所有奇数始终将最低有效位设置为1,所以这是测试数字是否为奇数的最快和最简单的方法。偶数是相反的。