Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #define DISP_SIZE 12
- #define SIZE 12 * 3
- // буффер 36 бит на экране 12 символов
- char numstr[SIZE];
- // количество символов на экране 12
- char dispStr[DISP_SIZE];
- void cleanStr() {
- for(int i = 0; i < SIZE; i++) {
- numstr[i] = '0';
- }
- }
- void cleanDispStr() {
- for(int i = 0; i < DISP_SIZE; i++) {
- dispStr[i] = '0';
- }
- }
- // только для отладки, ненужная функция
- void printStr() {
- for(int i = 0; i < SIZE; i++) {
- printf("%c", numstr[i]);
- }
- printf("\n");
- }
- void plus() {
- int i;
- int finded;
- for(i = SIZE - 1; i >= 0; i--) {
- if (numstr[i] == '0') {
- numstr[i] = '1';
- finded = 1;
- break;
- }
- }
- if (finded) {
- i++;
- for (; i < SIZE; i++) {
- numstr[i] = '0';
- }
- }
- }
- void minus() {
- int i;
- int finded;
- for(i = SIZE - 1; i >= 0; i--) {
- if (numstr[i] == '1') {
- numstr[i] = '0';
- finded = 1;
- break;
- }
- }
- if (finded) {
- i++;
- for (; i < SIZE; i++) {
- numstr[i] = '1';
- }
- }
- }
- void convert8() {
- cleanDispStr();
- int i, k;
- for (i = 0; i < SIZE / 3; i++) {
- dispStr[i] = ((numstr[i * 3+2] - '0') + \
- ((numstr[i*3 + 1] - '0') << 1) + \
- ((numstr[i*3] - '0') << 2)) + '0';
- }
- }
- void convert16() {
- cleanDispStr();
- int i, k;
- int tmp = 0;
- for (i = 0; i < SIZE / 4; i++) {
- tmp = (numstr[i*4+3] - '0') + \
- ((numstr[i*4 + 2] - '0') << 1) + \
- ((numstr[i*4 + 1] - '0') << 2) + \
- ((numstr[i*4]- '0') << 3);
- dispStr[i + 3] = tmp + (tmp > 9 ? 'A' - 10 : '0');
- }
- }
- int main() {
- cleanStr();
- numstr[32] = '1';
- numstr[30] = '1';
- numstr[26] = '1';
- numstr[29] = '1';
- plus();
- plus();
- plus();
- printStr();
- convert8();
- printf("OCT:%s\n", dispStr);
- convert16();
- printf("HEX:%s\n", dispStr);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement