Двоичные преобразования в языке Си
#include <xc.h> // library of functions for this chip #include <stdio.h> // library containing printf() function #include "configureUSART.h" // library for configureUSART(baud) #include "configuration_bits.h" void printCharAsBinary(unsigned char number); void WaitOneSecond(void); int main(void) { unsigned i = 0; configureUSART(9600ul, 1); // configure MCU serial communication module to run at 9600 baud // defined in configureUSART.c WaitOneSecond(); // The splash screen lasts about one second // LCD will not respond to printf() until it is finished. for(i=0; i < 256; i++) { printf("\n\r %u = ",i); printCharAsBinary((unsigned char)i); } while(1) { // MCUs run continuously so an endless loop is required. } } void printCharAsBinary(unsigned char number) { if ( ((number & 0b10000000) >> 7 ) == 1) printf("0b1"); else printf("0b0"); if ( ((number & 0b01000000) >> 6 ) == 1) printf("1"); else printf("0"); if ( ((number & 0b00100000) >> 5 ) == 1) printf("1"); else printf("0"); if ( ((number & 0b00010000) >> 4 ) == 1) printf("1"); else printf("0"); if ( ((number & 0b00001000) >> 3 ) == 1) printf("1"); else printf("0"); if ( ((number & 0b00000100) >> 2 ) == 1) printf("1"); else printf("0"); if ( ((number & 0b00000010) >> 1 ) == 1) printf("1"); else printf("0"); if ( ((number & 0b00000001) ) == 1) printf("1"); else printf("0"); } void WaitOneSecond(void) { int i = 0; for(i=0; i<=5; i++) { _delay(50000ul); // 50 000 * 4 / 1 000 000 = 1/5 s } }
Что я уже пробовал:
Я должен создать код для двоичного преобразования int, у меня есть следующий код для char. Я понимаю, что char-это 8 бит, а int-16 бит, и мне понадобится больше операций сдвига, чтобы проверить, " сколько существует степеней двух"
если бы у меня здесь было 7, то у меня было бы 14. не мог бы кто-нибудь объяснить мне, как устроены эти операторы сдвига. Я понимаю, что они проверяют мощность двух, но как они это делают, и если да, то как я могу применить это к более высоким битам. как настроить операторов смены?
Использование serLCD от sparkfun и PIC18F4525