3C科技 娛樂遊戲 美食旅遊 時尚美妝 親子育兒 生活休閒 金融理財 健康運動 寰宇綜合

Zi 字媒體

2017-07-25T20:27:27+00:00
加入好友
C/C++/C#/JAVA 邏輯(位元)運算 應用 資料來源: https://edisonx.pixnet.net/blog/post/34033421 線上執行: http://codepad.org/  /  https://www.tutorialspoint.com/compile_c_online.php 01. 符號     (1.1) NOT (~):反相位元, 取補數     (1.2) AND (&):有0則0, a&0=0, a&1=1     (1.3) OR   (|):有1則1,  a|0 =a, a^1=1     (1.4) XOR (^):奇1則1, a^0=a, a^1=~a     (1.5) >> :向右移位, a >> n 即 a 向右移 n 個 bits     (1.6) << :向左移位, a << n 即 a 向左移 n 個 bits. 02. 乘以2的n次方 #include int main() { int a, b; b=1; a = b*128; printf("a =%d\n",a); b=1; a = b << 7; // 128 = 2^7 printf("a =%d\n",a); return 0; }   03. 除以 2 的 n 次方 #include int main() { int a, b; b=256; a = b / 128; printf("a =%d\n",a); b=256; a = b >> 7; // 128 = 2^7 printf("a =%d\n",a); return 0; }   04.  交換二整數(int, unsigned, char)數值 #include int main() { int a=10, b=5; printf("a =%d,b=%d\n",a,b); a^=b; b^=a; a^=b; // 較不佳寫法:a^=b^=a^=b; printf("a =%d,b=%d\n",a,b); return 0; }   05.  判斷是否為奇數 (mask) #include int main() { int a=10,b=-1; if(a%2==0) // return 1, 奇數 { b=1; } else // return 0, 偶數 { b=0; } printf("b=%d\n",b); a=10; if((a&(0x01))==0) // return 1, 奇數 { b=1; } else // return 0, 偶數 { b=0; } printf("b=%d\n",b); }   06. 整數(int) 取負數(變號) #include int main() { int a, b; a=10; b = -a; printf("b=%d\n",b); a=10; b = ~a+1; printf("b=%d\n",b); a=10; b = (a ^ -1) + 1; printf("b=%d\n",b); }   07. 取2的n次方餘數 #include int main() { int a, b, c; b=157; c=8; a = b % c; // c = 2^n printf("a=%d\n",a); a = b & (c-1); printf("a=%d\n",a); }   08. 判斷是否為2的n次方 #include int main() { int a=128,b=-1; if( (a & -a) == a) // return 1, 為2之n方 { b=1; } else // return 0, 非2之n方 { b=0; } printf("b=%d\n",b); }   09. 遞增運算子與遞減運算子 #include int main() { int a; a=10; a = -~a; //a++; printf("a=%d\n",a); a = ~-a; // a--; printf("a=%d\n",a); }   10. 取低4bits位元(mask) #include int main() { unsigned a, b; a=255; b = a & 0x0f; // a取低4bits給b printf("b=%d\n",b); }   11. 取高4bits位元(mask) #include int main() { unsigned a, b; a=255-128; b = a&(0xf0); // a 取高4bits 給b printf("b=%d\n",b); b=b>>4; printf("b=%d\n",b); }   12. 取絕對值 #include int main() { int a, b; // assume int has 4 bytes. a=0; b=-10; a = b<0 ? -b : b; printf("a=%d\n",a); b=-100; a = (b ^ (b>>31)) - (b >> 31); printf("a=%d\n",a); }   13. 比較是否同號 #include int main() { int a, b, equ; a=10; b=20; equ=-1; if((a*b) > 0) { equ = 1; } else { equ = 0; } printf("equ = %d\n",equ); if((a^b) > 0) { equ = 1; } else { equ = 0; } printf("equ = %d\n",equ); } 心得: 基本四則運算都可以用邏輯電路實現

本文由jashliaoeuwordpress提供 原文連結

寫了 5860316篇文章,獲得 23313次喜歡
精彩推薦