A C variable, uint16_t Flags, is used in a program to bundle together several re
ID: 3877401 • Letter: A
Question
A C variable, uint16_t Flags, is used in a program to bundle together several related but unique flags and state information, as shown here
15 LS2 LS1 LS0- NEWI UIR S2S where LS2:LS0 -3-bit value indicating the number (0-7) of the last state. NEWI flag that indicates NEW Information is available to the program. UIR flag indicating when a User Interface Refresh is needed. s2:so 3-bit value indicating the number (0-7) of the current state. All other bits-' are reserved for future use and should not be subjected to code that will have their values altered.Explanation / Answer
Answer : Flags = Flags | (((Flags >> 2) & 1) << 10)
Detailed explaination on how to arrive at the code is given below
Given the following declaration, where the individual bits are as show in the picture given in question
uint16_t Flags;
The steps are
1. extract bit corresponding to the current state flag S2.
2. Move the extracted bit to position of LS2.
3. OR the moved bit with original variable Flags, to copy
Step1:
Flag bit S2 is at bit position 2, so to extract it we use (Flags >> 2) & 1
This shifts right by 2 positions and performs AND with 1 to extract the bit
Step2:
LS2 is bit no. 10. So to move the extracted bit to position 10, we use left shift << 10 i.e ((Flags >> 2) & 1) << 10
Step3:
Perform logical OR (|) of extracted bit with original Flags variable to copy over the S2 bit to LS2 bit
So the code is
Flags = Flags | (((Flags >> 2) & 1) << 10)
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.