zoukankan      html  css  js  c++  java
  • int是几位;short是几位;long是几位 负数怎么表示

    其实可以直接通过stm32的仿真看到结果:(这里是我用keil进行的测试,不知道这种方法是否准确)

    从上面看, char是8位  short是4*4=16位  int是8*4=32位  long是8*4=32位 

    这里关于 long还是有点不清楚,不是道是不是64位,有的人说是64位(起码在stm32中,long是32位的不是64位的),

    int 范围 -2^31——2^31-1,即-2147483648——2147483647  也就是10位数.

    为了验证long是多少位,然后进行了程序运行:

     通过上面程序输出来:

     从上面结果来看,long真的是4*8=32位的.

    如果设置: long long类型呢:

     可以看到long long是正确的所以long long 应该是64位的

    这个和编译器有关,

    在stm32的keil中:

    char 就是字节,占8位

    short 就是 short int 占2个字节  2*8=16位

    int 占4个字节 4*8 =32位

    long 就是 long int 占8个字节  4*8=32位

    正数的补码是它本身,

    负数的补码是它本身的值每位求反,最后再加一.

    如: -3

    那么就要先看3,3的十六进制是0x0003

    0x0003求反之后0xfffc

    然后加一 0xfffc加一 为0xfffd

    所以-3 表示为0xfffd

    计算机中存储-3都是以补码形式存在的. 即存的是0xfffd

    原码是给人看的

    补码是计算机存储的

    反码是中间产物

    正数的补码等于原码.

    负数的补码等于原码除去最高位,取反,加1

    计算机为什么要用补码表示负数,

    答案是为了方便计算

    参看:https://www.cnblogs.com/starry-skys/p/11997091.html

    https://www.cnblogs.com/starry-skys/p/11991906.html

    https://blog.csdn.net/super_demo/article/details/50117449

    这里比较详细:

    http://news.eeworld.com.cn/mcu/ic459073.html

           

    %dn

  • 相关阅读:
    stax(和dom4j功能一样,这个是基于流的一种处理方式)
    JAXB(xml和对象的转换)
    wsdl理解
    webservice心得
    ZT 分智网博客 – 职场、面试技巧、职业规划
    discern concern fifth sixth
    ZT I Believe I Can Fly(我相信我能飞)
    ZT 理解class.forName()
    ZT 第9章 Framework的启动过程
    android 智能指针的学习先看邓凡平的书扫盲 再看前面两片博客提升
  • 原文地址:https://www.cnblogs.com/chulin/p/13969033.html
Copyright © 2011-2022 走看看