int int.operator(int left,int right)&

时间:2017-10-22 20:51:38

标签: c#

我试着理解这个表达:

 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");
            }

        }

谢谢

3 个答案:

答案 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,所以这是测试数字是否为奇数的最快和最简单的方法。偶数是相反的。