C语言从零开始——day2

第二节

####   位运算   ####

创建文件bit_operation.c

int main(void)
{

        int i = 0b101010;
        int j = i << 2;//左移两位:10101000
                        //0xa8
        printf("j = 0x%x \n",j);

        int k = i >> 4; //右移四位:0010;注意:移出数据范围(移出去的数据)丢失
                        //0x2   

        //char变量表示的数据范围:[-128,127];如果超出范围,则循环
        char ch = 127;
        char chi = 128;
        char chin = 130;
        char china = -129;
        printf("ch = %d chi = %d chin = %d china = %d \n",ch,chi,chin,china);
                //127   -128     -126       127(会有警告)

/*
        //位异或(^)
        //规则:相异就或;
        //真值表达式:0^1=1;1^0=1;0^0=0;1^1=0;
        //用途:对数据的特定位取反
        int i = 0b1001010;
        int j = 0b0110110;
        int k = i ^ j;

                //0b111 1100
        printf("k = %x%x \n",k);
*/

/*
        //逻辑取反,非0即1;规则:假变真,真变假
        int i = 9;
        int j = !i;//i值为真,逻辑取反,变成假,即0
        printf("j = %d \n",j);

        int k = !!i;//两次逻辑取反,得到本身属性
        printf("k = %d \n",k);
*/

#if 0 //位取反规则:
        int i = -9; //ob1000...1001
                //补码:1...0111
                //取反:0...1000
                //实质上,取反过程是补码取反,也就是先补码,再取反

        int j = ~i;
        printf("j = 0x%x \n",j);
        
        int k = ~j;//== k = ~j = ~~i;对一个数连续取反,得到本身
        printf("k = 0x%d \n",k);

        int m = 9;//  0b0000...1001
        int n = ~m;
                //取反:1111...0110
                //0x:0xfffffff6
        printf("m = 0x%d \n",m);
        printf("n = 0x%x \n",n);
#endif

/*
        //在计算机内存储数据规则:补码存储;正数的补码是其本身,负数的补码:
        int i = -9;// 0b1000...1001
                    // 第一位表示正负位,负数用1,正数用0
                //补码:1111....0111;补码规则:取反加一(第一位不动)
        //十六进制中,0xfffffff7
        printf("i = 0x%x \n",i);
        printf("sizeof(i) = %d \n",sizeof(i));
*/
        return 0;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值