关于C++中移位操作

C++移位操作对int型和unsigned int型数据的影响不同,具体测试如下

Linux环境,GCC编译

/*************************************************************************
    > File Name: test.cpp
    > Author: Shorey
    > Mail: shoreybupt@gmail.com
    > Created Time: 2014年11月26日 星期三 16时45分50秒
 ************************************************************************/

#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
using namespace std;
int main()
{
	int a = 0x80000000,c = 0x40000000;
	unsigned int b = 0x80000000;
	printf("0x%X\n",a>>1);
	printf("0x%X\n",b>>1);
	printf("0x%X\n",c>>1);
	printf("0x%X\n",a<<1);
	printf("0x%X\n",b<<1);
	printf("0x%X\n",c<<1);
	return 0;
}


结果:

0xC0000000

0x40000000

0x20000000

0x0

0x0

0x80000000

可见右移后,int型变量最高位按原值补齐,unsigned int最高位用0补齐!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值