public static long positionStringToBin(String pos_str){
        if( !pos_str.matches("^[a-h][1-8]$") )
            throw new IllegalArgumentException();

        int ASCII_DEC_a = 97;   // ASCII code decimal representation for 'a'
        int ASCII_DEC_1 = 49;   // ASCII code decimal representation for '1'

        int NUMBER_OF_COLUMNS = 8;     // number of columns
        int NUMBER_OF_ROWS = 8;     // number of columns

        char[] pos_char = pos_str.toCharArray();
        long column = NUMBER_OF_COLUMNS - ( pos_char[0] - ASCII_DEC_a + 1 );
        long row = NUMBER_OF_ROWS - ( pos_char[1] - ASCII_DEC_1 + 1 );

        return (long)1 << row * 8 + column;
    }