c语言负数的移位运算

c语言负数的移位运算

ID:8973652

大小:30.00 KB

页数:2页

时间:2018-04-13

c语言负数的移位运算_第1页
c语言负数的移位运算_第2页
资源描述:

《c语言负数的移位运算》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、http://blog.csdn.net/e3399/article/details/7526230在c中左移也就是所说的逻辑移位,右端补0,而右移是算数移位,左端补齐的是最高位的符号位。故负数左移,有可能变成正数,但负数右移,肯定还是负数。用16进制的形式对数据进行赋值,这16进制的数代表的是补码。   i=0xfffffff7;//0xfffffff7是补码,而不是原码,故i=-9   printf("%d%x",i,i);   i=-9;   printf("%d%x",i,i); //故两个prin

2、tf输出结果相同/***********************************************************************Compiler:GCC*LastUpdate:Tue01May201207:31:44PMCST************************************************************************/#includeintmain(intargc,char**argv){inti=0x800000

3、0f;//这里的0x8000000f为int型数据的补码形式intj=i>>3;//右移是算术移位,i的值不变,左端补齐的是符号位intk=i<<1;//左移是逻辑移位,右端补0printf("%d%x",i,i);printf("%d%x",j,j);printf("%d%x",k,k);i=-9;printf("%d%x",i,i);i=0xfffffff7;j=i>>3;k=i<<1;printf("%d%x",i,i);printf("%d%x",j,j);printf("%d%x

4、n",k,k);return0;}运行结果:-21474836338000000f-268435455f0000001301e-9fffffff7-9fffffff7-2fffffffe-18ffffffee-9的8位补码表示是11110111,即0xf7,这里是int型,扩展成32位表示是0xfffffff7。也可以直接用32位的形式写出-9的补码形式。对于signed类型的扩展,看该数据的最高位,为1,则扩展的所有位都为1,为0,则扩展的位都为0,故0xf7扩展成32位是0xfffffff7。这里-9<<1=-

5、18。不能简单的从左移就相当于乘以2来理解,要从-9的补码是0xfffffff7f去考虑。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。