• 有符号和夫符号的取值范围、数值溢出


    1)有符号字符型:(signed char)8bit数据存储区间为-2^7——2^7-1;-128——127

    8bit数据最大存储值/一定是正数

    原/反/补码:0 111 1111=1000 0000-1=2^7-1=127//最大值

    8bit数据最小存储值

    原码:1111 1111=-127

    反码:1000 0000

    补码:1000 0001//表示存-127的值;然而并不是最小值,将它再-1

    补码:1000 0000  -0=-128//计算机中只保留0的值;-0的位置给了-128

    -128原码:1000 0000//-128原码和补码是一致的,但本身并不是一个值

    数据存储时,将-0对应的区间值设为最小值-2^7

    整型:(signed int)32bit数据存储区间-2^31——2^31-1;-2,147,483,648——2,147,483,647

    最大值:0111 1111 1111 1111 1111 1111 1111 1111

    最小值:1000 0000 0000 0000 0000 0000 0000 0000

    长长整型:(signed long long)64bit数据存储区间为-2^63——2^63-1

    2)无符号:无符号数最高位不是符号位,而是数的一部分,无符号数不可能是负数

    unsigned char数据存储区间为0——255

    最大值:1111 1111  2^8-1

    最小值:0000 0000  0

    Unsigned int数据存储区间为0——4,294,967,295

    最大值:1111 1111 1111 1111 1111 1111 1111 1111  2^32-1= 4,294,967,295

    最小值:0000 0000 0000 0000 0000 0000 0000 0000  0

    数据类型

    占用空间

    取值范围

    short

    2字节

    -32768到32767;-2^15——2^15-1

    int

    4字节

    -2147483648到2147483647;-2^31——2^31-1

    long

    4字节

    -2147483648到2147483647;-2^31——2^31-1

    long long

    8字节

    -2^63——2^63-1

    unsigned short

    2字节

    0到65535;0——2^16-1

    unsigned int

    4字节

    0到4294967295;0——2^32-1

    unsigned long

    4字节

    0到4294967295;0——2^32-1

    unsigned long long

    8字节

    0——2^64-1

    数值溢出:当超过一个数据类型能够存放最大的范围时,数值会溢出

    有符号位最高位溢出的区别:符号位溢出会导致数的正负发生改变,但最高位的溢出会导致最高位丢失。

    char ch=127

    ch=ch+2

    127原码:0111 1111            127反码:0111 1111            127补码:0111 1111

    2原码:0000 0010              2反码:0000 0010          2补码:0000 0010

                                                                                                           ch+2补码=1000 0001       

                                                                                                           ch+2反码=1000 0000

                                                                                                           ch+2原码=1111 1111

                                                                                                           ch+2=-127

    eg1:short a=0x7fff+2

    7fff原码:0111 1111 1111 1111

    7fff反码:0111 1111 1111 1111

    7fff补码:0111 1111 1111 1111

    2原码:0000 0000 0000 0010

    2反码:0000 0000 0000 0010

    2补码:0000 0000 0000 0010

    7fff补码:0111 1111 1111 1111

    2补码:0000 0000 0000 0010

    7fff+2补码=1000 0000 0000 0001

    7fff+2反码=1000 0000 0000 0000

    7fff+2原码=1111 1111 1111 1111

    Eg2.unsigned short=oxffff+5

    ffff原码:1111 1111 1111 1111

    ffff反码:1111 1111 1111 1111

    ffff补码:1111 1111 1111 1111

       5原码:0000 0000 0000 0101

       5反码:0000 0000 0000 0101

       5补码:0000 0000 0000 0101

     ffff补码:1111 1111 1111 1111

    5补码:0000 0000 0000 0101

     ffff+5补码=1000 0000 0000 0100

  • 相关阅读:
    Heartbeat
    HA集群基本概念详解
    crmsh语法
    corosync.conf
    安装cloudbase-init和qga批处理
    Oz代码梳理
    [转]LVS安装使用详解
    [转]LVS+Keepalived负载均衡配置
    Django REST framework之序列化组件以及源码分析+全局、局部Hook
    Django REST framework之解析器实例以及源码流程分析
  • 原文地址:https://www.cnblogs.com/wanghong19991213/p/13438855.html
Copyright © 2020-2023  润新知