У меня есть это задание, и я не уверен, как это сделать, и простой Google не поможет мне. Также не совсем уверен, что искать.
Но я создаю часы / часы, которые содержат часы, минуты и секунды. И битовая маска, которую мне дано использовать:
0000 0000 mask1
hhhh mmmm
0000 0000 mask2
mmss ssss
До сих пор я понял, что количество битов в часах является причиной для выбора 12 вариантов от 0 до> 11. И 6 битов для минуты и секунды для 0 -> 59.
Я часами ходил в темноте, создавая 12 отдельных битовых масок для каждого возможного часа. После того, как я закончил, я понял, что должен был делать это также минуты и секунды, что составляло бы 120 строк ненужного кода.
Вот что я сделал:
TIME_11_HOUR = 240, //1111
TIME_10_HOUR = 224, //1110
TIME_9_HOUR = 192, //1100
TIME_8_HOUR = 160, //1010
TIME_7_HOUR = 144, //1001
TIME_6_HOUR = 112, //0111
TIME_5_HOUR = 96, //0110
TIME_4_HOUR = 80, //0101
TIME_3_HOUR = 64, //0100
TIME_2_HOUR = 48, //0011
TIME_1_HOUR = 32, //0010
TIME_0_HOUR = 16 //0001 0000
Я считаю, что решение связано со сдвигом битов, но я не совсем уверен, как это сделать.
Может ли кто-нибудь дать мне пример изменения 0001 (0 часов) на 1010 (8 часов), чтобы я мог реализовать это в своем коде и выяснить это самостоятельно.