understand how to use masks and create them in an machine independent way know fast ways to clear the lowermost set bit (and by extensionset the lowermost get its indexetc understand signedness and its implications to shifting consider using cache to accelerate operations by using it to brute-force small inputs be aware that commutativity and associativity can be used to perform operations in parallel and reorder operations table top tips for primitive types the key methods for numeric types are abs(- )math ceil( )math floor( )min( ,- )max( )pow( (alternately * )and math sqrt( know how to interconvert integers and stringse str( )int(' ')floats and stringse str( )float(' 'unlike integersfloats are not infinite precisionand it' convenient to refer to infinity as float('inf'and float('-inf'these values are comparable to integersand can be used to create psuedo max-int and pseudo min-int when comparing floating point values consider using math isclose()--it is robuste when comparing very large valuesand can handle both absolute and relative differences the key methods in random are random randrange( )random randint( , )random random()random shuffle( )and random choice( computing the parity of word the parity of binary word is if the number of in the word is oddotherwiseit is for examplethe parity of is and the parity of is parity checks are used to detect single bit errors in data storage and communication it is fairly straightforward to write code that computes the parity of single -bit word how would you compute the parity of very large number of -bit wordshintuse lookup tablebut don' use entriessolutionthe brute-force algorithm iteratively tests the value of each bit while tracking the number of seen so far since we only care if the number of is even or oddwe can store the number modulo def parity ( )result while xresult ^