Tôi tìm thấy enum được xác định như thế này và không thể tìm ra lý do tại sao chúng đặt số 0 đứng đầu ở đó.Tôi đang đọc mã nguồn mở (C++) và không thể tìm ra lý do tại sao chúng đặt enum theo cách này
enum SquareDelta {
DELTA_SSW = -021,
DELTA_SS = -020,
DELTA_SSE = -017,
DELTA_SWW = -012,
DELTA_SW = -011,
DELTA_S = -010,
DELTA_SE = -07,
DELTA_SEE = -06,
DELTA_W = -01,
DELTA_ZERO = 0,
DELTA_E = 01,
DELTA_NWW = 06,
DELTA_NW = 07,
DELTA_N = 010,
DELTA_NE = 011,
DELTA_NEE = 012,
DELTA_NNW = 017,
DELTA_NN = 020,
DELTA_NNE = 021
};
Tôi đoán đây không chỉ là int enum bình thường mà là gì? nó có thể được trong hex giống như số bắt đầu với "0x"?
Khái niệm cơ bản dường như sử dụng ba bit (bát phân là 3 bit, không có gì để làm với số chữ số) để theo dõi khoảng cách về phía bắc/nam và ba bit để theo dõi cách xa về phía đông/tây . NNE = N + N + E = 010 + 010 + 001. SWW = S + W + W = -010 + -001 + -001.Tôi đã có thể đoán rằng âm bản trong twos khen làm cho việc sử dụng khó hiểu hơn mặc dù. –
@Mooing Duck: Kỹ năng giải mã Yay! – orlp
Đoán không, 3 bit thấp nhất là E/W, nhưng 3 bit tiếp theo chỉ mơ hồ tương ứng với N/S. –