From ac6f7267b9cac7e5a0537561ead91e124fbea1df Mon Sep 17 00:00:00 2001 From: stuffacc Date: Thu, 25 Dec 2025 21:03:27 +0300 Subject: [PATCH 1/3] task --- 7/bit.c | 132 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 7/bit.h | 11 +++++ 2 files changed, 143 insertions(+) create mode 100644 7/bit.c create mode 100644 7/bit.h diff --git a/7/bit.c b/7/bit.c new file mode 100644 index 0000000..7341eac --- /dev/null +++ b/7/bit.c @@ -0,0 +1,132 @@ +#include "bit.h" + + +void copyArr(char arr1[], char arr2[], int n) { + for (int i = 0; i < n; i++) { + arr1[i] = arr2[i]; + } +} + +void decToBin(int num, char bin[]) { + int temp = num; + if (temp < 0) { + temp = -temp; + } + + for (int i = BITS - 1; i >= 0; i--) { + bin[i] = (char) (temp % 2) + '0'; + temp = temp / 2; + } +} + +void invert(char bin[]) { + for (int i = 0; i < BITS; i++) { + bin[i] = (bin[i] == '0') ? '1' : '0'; + } +} + +void addInBin(char a[], char b[], char result[]) { + int carry = 0; + + for (int i = BITS - 1; i >= 0; i--) { + int bitA = (int) a[i] - '0'; + int bitB = (int) b[i] - '0'; + + int sum = bitA + bitB + carry; + + result[i] = (char) (sum % 2) + '0'; + carry = sum / 2; + } +} + +int binToDec(char bin[]) { + if (bin[0] == '0') { + int result = 0; + for (int i = 0; i < BITS; i++) { + result = result * 2 + (bin[i] - '0'); + } + return result; + } + else { + char minusOne[BITS] = {'1', '1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1'}; + + char result[BITS] = {'0'}; + addInBin(bin, minusOne, result); + + invert(result); + + int res = 0; + for (int i = 0; i < BITS; i++) { + res = res * 2 + (bin[i] - '0'); + } + return res; + } +} + +void printBinary(char bin[]) { + for (int i = 0; i < BITS; i++) { + printf("%c", bin[i]); + } + printf("\n"); +} + +int main() { + int a, b; + printf("Введите два числа (Integer):\n"); + printf("Первое число: "); + scanf("%d", &a); + printf("Второе число: "); + scanf("%d", &b); + + char binA[32] = {'0'}; + char binB[32] = {'0'}; + + decToBin(a, binA); + decToBin(b, binB); + + if (a < 0) { + invert(binA); + + char one[BITS] = {'0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1'}; + one[BITS - 1] = '1'; + + char result[BITS] = {'0'}; + addInBin(binA, one, result); + + copyArr(binA, result, BITS); + } + + if (b < 0) { + invert(binB); + + char one[BITS] = {'0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1'}; + + printBinary(one); + + char result[BITS] = {'0'}; + addInBin(binB, one, result); + + copyArr(binB, result, BITS); + } + + printf("\nДвоичное\n"); + printf("Число %d: ", a); + printBinary(binA); + + printf("Число %d: ", b); + printBinary(binB); + + char binSum[BITS] = {'0'}; + addInBin(binA, binB, binSum); + + printf("\nСумма в двоичном\n"); + printBinary(binSum); + + int sumDecimal = binToDec(binSum); + + printf("\nСумма в десятичной\n"); + + printf("%d\n", sumDecimal); + + return 0; +} diff --git a/7/bit.h b/7/bit.h new file mode 100644 index 0000000..2bfff33 --- /dev/null +++ b/7/bit.h @@ -0,0 +1,11 @@ +#pragma once +#include + +#define BITS 32 + +void copyArr(char arr1[], char arr2[], int n); +void decToBin(int num, char bin[]); +void invert(char bin[]); +void addInBin(char a[], char b[], char result[]); +int binToDec(char bin[]); +void printBinary(char bin[]); From c5a977b10dc9057836ab99f6ce5e38e1351d9feb Mon Sep 17 00:00:00 2001 From: stuffacc Date: Thu, 25 Dec 2025 21:05:51 +0300 Subject: [PATCH 2/3] webkit --- 7/bit.c | 103 +++++++++++++++++++++++++++++--------------------------- 1 file changed, 54 insertions(+), 49 deletions(-) diff --git a/7/bit.c b/7/bit.c index 7341eac..b87dc84 100644 --- a/7/bit.c +++ b/7/bit.c @@ -1,60 +1,63 @@ #include "bit.h" - -void copyArr(char arr1[], char arr2[], int n) { +void copyArr(char arr1[], char arr2[], int n) +{ for (int i = 0; i < n; i++) { arr1[i] = arr2[i]; } } -void decToBin(int num, char bin[]) { +void decToBin(int num, char bin[]) +{ int temp = num; if (temp < 0) { temp = -temp; } - + for (int i = BITS - 1; i >= 0; i--) { - bin[i] = (char) (temp % 2) + '0'; + bin[i] = (char)(temp % 2) + '0'; temp = temp / 2; } } -void invert(char bin[]) { +void invert(char bin[]) +{ for (int i = 0; i < BITS; i++) { bin[i] = (bin[i] == '0') ? '1' : '0'; } } -void addInBin(char a[], char b[], char result[]) { +void addInBin(char a[], char b[], char result[]) +{ int carry = 0; - + for (int i = BITS - 1; i >= 0; i--) { - int bitA = (int) a[i] - '0'; - int bitB = (int) b[i] - '0'; - + int bitA = (int)a[i] - '0'; + int bitB = (int)b[i] - '0'; + int sum = bitA + bitB + carry; - - result[i] = (char) (sum % 2) + '0'; + + result[i] = (char)(sum % 2) + '0'; carry = sum / 2; } } -int binToDec(char bin[]) { +int binToDec(char bin[]) +{ if (bin[0] == '0') { int result = 0; for (int i = 0; i < BITS; i++) { result = result * 2 + (bin[i] - '0'); } return result; - } - else { - char minusOne[BITS] = {'1', '1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1'}; - - char result[BITS] = {'0'}; + } else { + char minusOne[BITS] = { '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1' }; + + char result[BITS] = { '0' }; addInBin(bin, minusOne, result); - + invert(result); - + int res = 0; for (int i = 0; i < BITS; i++) { res = res * 2 + (bin[i] - '0'); @@ -63,70 +66,72 @@ int binToDec(char bin[]) { } } -void printBinary(char bin[]) { +void printBinary(char bin[]) +{ for (int i = 0; i < BITS; i++) { printf("%c", bin[i]); } printf("\n"); } -int main() { +int main() +{ int a, b; printf("Введите два числа (Integer):\n"); printf("Первое число: "); scanf("%d", &a); printf("Второе число: "); scanf("%d", &b); - - char binA[32] = {'0'}; - char binB[32] = {'0'}; - + + char binA[32] = { '0' }; + char binB[32] = { '0' }; + decToBin(a, binA); decToBin(b, binB); - + if (a < 0) { invert(binA); - - char one[BITS] = {'0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1'}; + + char one[BITS] = { '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1' }; one[BITS - 1] = '1'; - - char result[BITS] = {'0'}; + + char result[BITS] = { '0' }; addInBin(binA, one, result); - + copyArr(binA, result, BITS); } - + if (b < 0) { invert(binB); - - char one[BITS] = {'0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1'}; - + + char one[BITS] = { '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1' }; + printBinary(one); - - char result[BITS] = {'0'}; + + char result[BITS] = { '0' }; addInBin(binB, one, result); - + copyArr(binB, result, BITS); } - + printf("\nДвоичное\n"); printf("Число %d: ", a); printBinary(binA); - + printf("Число %d: ", b); printBinary(binB); - - char binSum[BITS] = {'0'}; + + char binSum[BITS] = { '0' }; addInBin(binA, binB, binSum); - + printf("\nСумма в двоичном\n"); printBinary(binSum); - + int sumDecimal = binToDec(binSum); - + printf("\nСумма в десятичной\n"); - + printf("%d\n", sumDecimal); - + return 0; } From c84157f76ca1ca49e97d1c703a0bb10c60d32e91 Mon Sep 17 00:00:00 2001 From: stuffacc Date: Thu, 25 Dec 2025 21:12:12 +0300 Subject: [PATCH 3/3] CMakeLists.txt --- 7/CMakeLists.txt | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 7/CMakeLists.txt diff --git a/7/CMakeLists.txt b/7/CMakeLists.txt new file mode 100644 index 0000000..362bb8d --- /dev/null +++ b/7/CMakeLists.txt @@ -0,0 +1,10 @@ +# Устанавливаем минимальную версию CMake +cmake_minimum_required(VERSION 3.25) +# Указываем название проекта и используемый язык(и) +set(CMAKE_C_STANDARD 99) +set(CMAKE_C_STANDARD_REQUIRED ON) + +project(Bit C) + +# Указываем исполняемый файл +add_executable(Bit bit.c)