From 7ef18644e89aec99359ba0e033535a79089ad152 Mon Sep 17 00:00:00 2001 From: Rushil Umaretiya Date: Wed, 21 Feb 2024 14:58:29 -0500 Subject: [PATCH] finished negate --- .gitignore | 3 ++- negate2s.c | 34 ++++++++++++++++++++++++++++++++-- 2 files changed, 34 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 541caf4..239a9dc 100644 --- a/.gitignore +++ b/.gitignore @@ -5,9 +5,10 @@ signed twos negate2s f32 +.vscode # macOS .DS_Store -# IDE +# IDEif (i >= 0) .idea diff --git a/negate2s.c b/negate2s.c index 6eacb4b..3059c1d 100644 --- a/negate2s.c +++ b/negate2s.c @@ -2,7 +2,37 @@ // I pledge the COMP 211 honor code. #include +#include +#include -int main() { +int main(int argc, char *argv[]) { + char input[33]; + char output[33] = {'\0'}; + + strncpy(input, argv[1], 32); + input[32] = '\0'; + + for (int i = 0; i < 32; i++) + output[i] = (input[i] == '0') ? '1' : '0'; + + output[32] = '\0'; + + if (input[0] == '1') { + int carry = 1; + for (int i = 31; i >= 0 && carry; i--) { + output[i] = (input[i] == '0') ? '1' : '0'; + if (input[i] == '0') carry = 0; + } + } else { + int i = 31; + while (input[i] == '0' && i >= 0) { + output[i] = '0'; + i--; + } + + output[i] = '1'; + } + + printf("%s\n", output); return EXIT_SUCCESS; -} +} \ No newline at end of file