热情软件屋

 

<<是什么作用


编号:QA003742
建立日期: 2001年1月7日 最后修改日期:2003年5月18日
所属类别:

hejasi:
    程序如下:
    #include"stdafx.h"
    #include<iostream>
    using namespace std;
    int main(int argc,char* argv[])
    {
     int val1=256;
     int result;
     out<<"val="<<val1<<endl;
     result=val1<<3;
     cout<<"result="<<result<<endl;
     return 0;
    }
    请问为什么结果会是2048,它的过程是怎样的?还有<<符号是有什么用的。

回答:

    result=val1<<3这一行中的<<是将数按照二进制左移的意思。m<<n就是将m左移n次。左移一次相当于乘2,所以左移3次相当于乘8。256 <<3 = 256 * 8 = 2048。
    
    柏超那么对于有符号数和无符号数,<<又是怎样处理的呢,这个和汇编里的循环移位指令有什么不同?
    :“<< ”左边的运算数的各二进位全部左移若干位,由“<<”右边的数指定移动的位数,高位丢弃,低位补0。右移运算符“>>”功能是把“>> ”左边的运算数的各二进位全部右移若干位,“>>”右边的数指定移动的位数。 应该说明的是,对于有符号数,在右移时,符号位将随同移动。当为正数时, 最高位补0,而为负数时,符号位为1,最高位是补0或是补1 取决于编译系统的规定。大多数系统规定为补1。也就是说如果左操作数是一个无符号量,则移位是一个逻辑移位,否则是算术移位。移位的处理是依赖于编译系统的,不同的编译系统可能是不同的。
    
    LIHONG的意见:
    cout是ostream类的一个实例。它由C++自动产生。而“<<”是ostream类的运算符重载。参看C++的重载一章。

此问题由李海回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio