def create_msb_table_individual(poly, width):
    """ Generate a CRC table calculating each entry.
        Mainly for demonstration and test, since calculate_msb_table() is
        much more efficient at calculating the same information
    :return: Generated table
    """
    msb_lshift = width - 8
    ms_bit = 1 << width - 1
    result_mask = (1 << width) - 1
    table = 256 * [0]
    for n in range(1, 256):
        crc = n << msb_lshift
        for _ in range(8):
            if crc & ms_bit:
                crc = crc << 1 ^ poly
            else:
                crc <<= 1
        table[n] = crc & result_mask
    return table
