关闭

【C/C++】关于C语言的位运算

标签: c语言位运算
134人阅读 评论(0) 收藏 举报
分类:

C语言位运算

 

位逻辑运算

四种运算法则如下

~位取反

A=~A

&位运算

1&1=1   1&0=0   0&1=1  0&0=0

|位运算

1|1=1       1|0=1       0|1=1       0|0=0

^位异或

1^1=0      1^0=1      0^1=1      0^0=0

 

实例:

#include <stdio.h>
void main(){
         short czs1=521;
         short czs2=123;
         shortResAnd,ResOr,ResNot,Res;
         ResAnd=czs1&czs2;
         ResOr=czs1|czs2;
         ResNot=~czs1;
         Res=czs1^czs2;
        
         printf("位于%d:\n",ResAnd);
         printf("位或%d:\n",ResOr);
         printf("位取反%d:\n",ResNot);
         printf("位异或%d:\n",Res);
        
         getch();
}


 

运行结果如下:

运行效果图


分析:

Short类型占据两个内存单元 一个内存单元=8位

1内存单元=8bit

因此,Short类型占据16位

位与:

 位于运算原理图

位或:

 

位异或:

 

位取反:

 

位与/位或/位异或都很好理解,重点是位取反

 

带符号的数是以机械数的补码形式储存的,正数的补码是其本身,负数的补码等于其反补码加1

*反码:每一位取反

 

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:2134次
    • 积分:104
    • 等级:
    • 排名:千里之外
    • 原创:8篇
    • 转载:1篇
    • 译文:0篇
    • 评论:2条
    文章分类
    文章存档
    最新评论