zoukankan      html  css  js  c++  java
  • C语言中1右移问题

    #include <stdio.h>
    
    int main(int argc, char** argv)
    {
        char ch = -1;
    
        ch = ch >> 1;
        printf("%d\n", ch); // -1
    
        ch = -1;
        ch = ch >> 2;
        printf("%d\n", ch); // -1
    
        ch = -1;
        ch = ch >> 3;
        printf("%d\n", ch); // -1
    
        return 0;
    }

    程序输出:

    -1

    -1

    -1

    首先写出-1的补码,1111 1111,由于char为有符号数,遵循有符号数右移的规则。

    最高位补符号位,其它空出来的位也补符号位。

    (1)-1右移1位,得111 1111,再补上符号位,最终得出1111 1111,为-1;

    (1)-1右移2位,得11 1111,其它空出来1位补上1,得111 1111,再补上符号位,最终得出1111 1111,为-1;

    (1)-1右移3位,得1 1111,其它空出来2位补上1,得111 1111,再补上符号位,最终得出1111 1111,为-1;

  • 相关阅读:
    SWT DragSource 和 DropTarget 托拉拽
    Java的反射机制
    1. 算法导论
    SWT对于监听Tab键的理解
    SWT基础
    socket
    TCP/IP
    RPC(远程过程调用协议)
    Jython基本知识
    #与##
  • 原文地址:https://www.cnblogs.com/Robotke1/p/3075684.html
Copyright © 2011-2022 走看看