我是Python的新手并且无法理解这一点。有人可以帮我打破声明吗?
n和奇偶校验都是整数
n += parity != n & 1
答案 0 :(得分:5)
表达式评估为n += (parity != (n & 1))
,结果为:
n & 1
是位掩码,它将整数n
屏蔽为最低有效位。如果n
为奇数,则为1
,如果为偶数,则该位为0
。
parity != 0
或parity != 1
生成布尔结果,True
或False
,表示parity
不是0
等于右侧的1
或True
。
生成的False
或n
最新添加到n = n + True
,就像您n = n + False
或int
一样。 Python布尔类型是False
的子类,0
的整数值为True
,1
的值为0
。
代码实质上是根据1
的值将n
或parity
添加到n
,如果n & 1
当前是偶数或奇数
简短的演示可以更好地说明这一点。
首先,0
生成1
或>>> n = 10 # even
>>> bin(n) # the binary representation of 10
'0b1010'
>>> n & 1 # should be 0, as the last bit is 0
0
>>> n = 11 # odd
>>> bin(n) # the binary representation of 11
'0b1011'
>>> n & 1 # should be 1, as the last bit is 1
1
:
parity != 0
接下来是parity != 1
或parity
部分;请注意,我认为0
仅限于1
或>>> parity = 0
>>> parity != 1
True
>>> parity != 0
False
>>> parity = 1
>>> parity != 1
False
>>> parity != 0
True
,因此拥有其他值真的没有意义:
>>> isinstance(True, int)
True
>>> int(True)
1
>>> 10 + True
11
>>> 10 + False
10
最后,布尔值是整数:
import tkinter #widget library ships with Python
import Pmw #allows access to update tkinter widgets
class TextBookGUI:
# class constructor
# populates each note book page
def __init__(self, master):
#place hash tables here
"""
Create 5 pages on using Pmw notebook widget.
Documenation for notebook:
http://pmw.sourceforge.net/doc/NoteBook.html
"""
self.nb = Pmw.NoteBook(master)
Pmw.Color.changecolor(self.nb.component('hull'), background='blue')
self.HomeTab = self.nb.add("Welcome")
self.nb.tab('Welcome').focus_set()
self.StudentTab = self.nb.add("Students")
self.BookTab = self.nb.add("Books")
self.LoanTab = self.nb.add("Loans")
self.HelpTab = self.nb.add("Help")
self.nb.pack(fill = 'both', expand = 1, padx = 10, pady = 10)
self.nb.setnaturalsize()
#format the house style of tabs: yellow bg and blue text
self.nb.component('Welcome-tab').configure(font= ('Helvetica', 7 ,'bold', 'italic'), width= 30,fg= "yellow", bg="blue")
该公式看起来正在计算CRC checksum。
答案 1 :(得分:0)
让我们打破这个:
(n += (parity != (n & 1)))
(n & 1)
这是位掩码,取n
的最小(最低有效位)值。
parity !=
如果parity
与(n & 1)
n +=
这会使n
增加该行的其余部分返回的任何值。
n parity output(increment of n)
0 1 1
1 1 0
1 0 1
0 0 0
从上表中可以看出它的功能类似于n的LSB和奇偶校验的XOR。
注意:通常奇偶校验是数据包的奇数(1)或偶数(0)。
希望这有帮助!享受。