zoukankan      html  css  js  c++  java
  • C位移操作

       1: #include <stdio.h>
       2:  
       3: main () {
       4:     int a = 1;
       5:     unsigned b = 1;
       6:  
       7:     int c = -1;
       8:     char d = 'a';
       9:  
      10:     printf("%d\n", d);
      11:     printf("%d\n", 'A');
      12:  
      13:     a = a<<1;
      14:     b = b<<1;
      15:     c = c<<1;
      16:     d = d<<1; // a is decimal 97, bin 1100001
      17:  
      18:     printf("%d\n", a);
      19:     printf("%d\n", b);
      20:     printf("%d\n", c);
      21:     printf("%d\n", d);
      22:  
      23:  
      24: }

    输出:

    image

    1.  不管是左移还是右移,如果操作数为无符号数,则填充字段为0;如果操作数为有符号数,填充字段为编译器自定义,有可能为0,也有可能为符号比特。

    2. 负数在内存中以补码形式表示,以变量d为例,a的二进制数为1100001,左移一位后为11000010,为十进制数62的补码形式。具体的说 11000010取反加一后为整数62的表示形式,所以11000010为-62.

  • 相关阅读:
    Func,Action 的介绍及其用法
    创建自定义Windows phone 样式(二)mango下的实现
    今天五一休息
    关于地震
    第一步
    心绪不佳
    真的无语
    购物,生活
    一周结束
    who怕who
  • 原文地址:https://www.cnblogs.com/dracohan/p/3011677.html
Copyright © 2011-2022 走看看