回 帖 发 新 帖 刷新版面

主题:[讨论]很简单的问题:关于>>运算符

这是关于 >> 运算符的问题。
>> 运算符在对待有符号数和无符号数好象有差别。

说明: 1. show_char的功能是显示出char类型数在内存中的表示 
       2. show-int 的功能是显示出int 类型数在内存中的表示
       3. windy.h文件在附件中    



[code=c]
#include "stdlib.h"
#include "stdio.h"
#include "windy.h"

#define  Uchar unsigned char
#define  Uint  unsigned int


void ( Show )( char ch,Uchar uch,int i,Uint ui )
{
     printf( "  ch  "   ); show_char( &ch  );
     printf( "\n uch  " ); show_char( &uch );
     printf( "\n   i  " ); show_int ( &i   );
     printf( "  ui  "   ); show_int ( &ui  );
}

void ( RightShift )( char ch,Uchar uch,int i,Uint ui,Uint bits )
{    //右移bits位 
     printf( "\n\nRight Shift %d bits \n",bits ) ;
     Show( ch>>= bits,  uch>>= bits,  i>>= bits,  ui >>= bits );
}  
          
int main( void )
{
    char  ch  = 0x81;
    Uchar uch = 0x81;
    int   i   = 0x80000002;
    Uint  ui  = 0x80000002;   
          
    RightShift( ch,uch,i,ui,0 ); //原始数据 
    RightShift( ch,uch,i,ui,1 ); //右移1位 
    RightShift( ch,uch,i,ui,2 ); //右移2位 
    RightShift( ch,uch,i,ui,3 ); //右移3位 
   
    printf( "\n\n" );
    system( "pause" );
    return 0 ;
}[/code]

回复列表 (共14个回复)

11 楼

回7楼10楼 :说实话,那些代码一点意义都没有,除了用来学习。本来那些代码就是为了学习写的。有时候需要满足一些特殊的要求,代码看起来确实有点奇怪,但我那是没办法:没想到比较简单清晰的思路;汇编也学得很差,还不能用来分析C语言代码。

12 楼

[quote]用gcc编译出来的汇编指令和我看的书有点不一样,有时候看不懂。所以没从汇编代码来考虑。
[/quote]
呵呵,这主要是调试器而不是编译器,程序编译后都是机器码,所以看反汇编时只是调试器的事儿了:)

13 楼

推荐用IDA PRO,钢钢的,谁用谁知道

14 楼

IDA PRO ,恩, 收下了!!

还有个问题:用gcc -S **.c得到的也是汇编代码。如果一开始写一个空函数,然后把它编译成汇编代码,然后在得到的汇编代码中再添加汇编指令,然后再用gcc把它生成目标文件(或者做成静态库),是不是以后也可以象调用普通函数那样去调用那个函数?

我来回复

您尚未登录,请登录后再回复。点此登录或注册