Implement four operations using the bit operation - Huawei interview questions

xiaoxiao2021-03-06  38

#include

INT Add (int A, int b) {INT i = 0, j = 0, c = 0; for (i = 0, j = 0; i <31; i) {IF (((A & 1) & ((A & 1) & B & 1) | ((A & 1) & (j)) | ((B & 1) & (j))) {IF ((A & 1) & (B & 1) & J) C | = 0x40000000; J = 1;} else {IF ((A & 1) | (B & 1) | J) c | = 0x40000000; J = 0;} IF (i <30) {c >> = 1; A >> = 1; b >> = 1;}

} A >> = 1; b >> = 1; if (j ^ (a & 1) ^ (b & 1)) c | = 0x80000000;

Return C;

Int sub (int A, int b) {RETURN ADD (A, Add (~ B, 1));

INT MUL (INT A, INT B) {INT SIGN = ((A & 0x80000000) >> 31) & 0x00000001; IF (a <0) A = add (~ a, 1); if (B < 0) B = add (~ b, 1); int C = 0; while (b> 0) {if (b & 1) {c = add (c, a); b = Sub (b, 1);} else { a << = 1; b >> = 1;}}} (sIGN) c = add (~ c, 1);

Return C;

Void Div (INT A, INT B) {Int Sign = (((A & 0x80000000)) >> 31) & 0x00000001; IF (a <0) A = Add (~ a, 1); if (B < 0) B = add (~ b, 1); IF (Sign && A! = 0) Printf ("-");

INT i = 0; while (a> = b) {a = sub (a, b); i = add (i, 1);} Printf ("% d", i); if (a! = 0) { Printf ("."); A = MUL (A, 10); i = 0; While (a> = b) {a = SUB (a, b); i = add (i, 1);} printf (" % D ", I);}}

转载请注明原文地址:https://www.9cbs.com/read-67252.html

New Post(0)