Я запутался в том, что я должен изменить в функции printcharasbinary() для работы с целыми числами при создании функции printintasbinary ().
Здравствуйте, мне дана функция printCharAsBinary(unsigned char number) в файле binaryformat.c. я должен создать вторую функцию printIntAsBinary(unsigned int number) для работы с целыми числами. Однако я запутался в том, что я должен изменить в функции printCharAsBinary() для работы с целыми числами при создании функции printIntAsBinary ().
Binaryformat.c с функцией printCharAsBinary.
#include <xc.h> // library of functions for this chip #include <stdio.h> // library containing printf() function void printIntAsBinary(unsigned int 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); printIntAsBinary((unsigned int)i); } while(1) { // MCUs run continuously so an endless loop is required. } } void printIntAsBinary(unsigned int 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 } }
Что я уже пробовал:
Я не уверен, как решить эту проблему.Мне дана функция printCharAsBinary(unsigned char number) в файле binaryformat.c. я должен создать вторую функцию printIntAsBinary(unsigned int number) для работы с целыми числами. Однако я запутался в том, что я должен изменить в функции printCharAsBinary() для работы с целыми числами при создании функции printIntAsBinary ().
Dotnet_Dotnet
сэр где вы определяете printintasbinary
Member 13635589
Привет, это функция printCharAsBinary. Я все еще должен создать функцию printIntAsBinary. Вопрос заключается в том, что я буду использовать функцию printCharAsBinary fnction для работы с целыми числами?
Спасибо,
Я очень запутался
CPallini
Ты нам ничего не показал printCharAsBinary
определение.
Member 13635589
Привет, это функция printCharAsBinary. Я все еще должен создать функцию printIntAsBinary. Вопрос заключается в том, что я буду использовать функцию printCharAsBinary fnction для работы с целыми числами?
Спасибо,
Я очень запутался
Richard MacCutchan
Вы должны научиться создавать циклы для повторения одних и тех же инструкций.
Вы всегда будете посылать 0b первым,
затем просто используйте счетчик для сдвига битов и повторите вывод 0 или 1 для каждого бита.
Member 13635589
Привет, это функция printCharAsBinary. Я все еще должен создать функцию printIntAsBinary. Вопрос заключается в том, что я изменю на printCharAsBinary fnction для работы с целыми числами?
Спасибо,
Я очень запутался
Richard MacCutchan
Сначала вам нужно преобразовать целое число в строку символов. Затем для каждого символа вы печатаете с помощью существующего метода.
Member 13635589
Привет, я не знаю, как это сделать. Это один из моих первых примеров домашнего задания, но я не знаю, как это сделать.
Я не собираюсь жульничать или что-то в этом роде, так как это только для домашней практики. Если бы вы могли показать мне, как это делается, я был бы вам очень признателен.
Спасибо
Richard MacCutchan
Итак, реальный вопрос, который вы должны были задать здесь, состоял в том, как преобразовать целое число в строку символов. Основная концепция заключается в том, что вы многократно делите целое число на 10, пока оно не выйдет из нуля. На каждом шаге вы берете остаток деления, и это следующая цифра нижнего порядка, и вы должны добавить базу символов, чтобы сделать ее символом. Итак, что-то вроде:
char Remainder = IntegerValue % 10; // the % operator gives the remainder from the division
Remainder += '0'; // make it a printable character ...
//
// This is the low order character of the string
//
IntegerValue /= 10; // divide by 10 to reduce the value
If IntegerValue > 0 Repeat the above ...
На каждом шаге, где вы извлекли символ, вам нужно его где-то сохранить. Вы можете просто сохранить его в массиве, если помните, что окончательный список будет в обратном порядке.