正、负数移位运算

今天又扫了一下盲区,值得注意的一点就是:

负数在右移时,左侧是补“1”的。


测试代码:

int test_12()
{
		printf("--------test_12--------\n");
    int i = 0, j = -1, k = 1;

    printf("(i) = 0x%0x, %d\n", (i),(i));
    printf("((i)>>8) = 0x%0x, %d\n", ((i)>>8),((i)>>8));
    printf("((i)>>8) = 0x%0x, %d\n", ((i)<<8),((i)<<8));
    
    printf("(j) = 0x%0x, %d\n", (j),(j));
    printf("((j)>>8) = 0x%0x, %d\n", ((j)>>8),((j)>>8));
    printf("((j)>>8) = 0x%0x, %d\n", ((j)<<8),((j)<<8)); 
    
    printf("(k) = 0x%0x, %d\n", (k),(k));
    printf("((k)>>8) = 0x%0x, %d\n", ((k)>>8),((k)>>8));
    printf("((k)>>8) = 0x%0x, %d\n", ((k)<<8),((k)<<8)); 
    
    printf("(~i) = 0x%0x, %d\n", (~i),(~i));
    printf("((~i)>>8) = 0x%0x, %d\n", ((~i)>>8),((~i)>>8));
    printf("((~i)>>8) = 0x%0x, %d\n", ((~i)<<8),((~i)<<8));
		return 0;
}


测试结果:



测试环境:

ubuntu@ide:~/ide$ g++ --version                                                                                                                                                                                                         
g++ (Ubuntu 4.8.4-2ubuntu1~14.04.1) 4.8.4                                                                                                                                                                                               
Copyright (C) 2013 Free Software Foundation, Inc.                                                                                                                                                                                       
This is free software; see the source for copying conditions.  There is NO                                                                                                                                                              
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 





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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值