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


    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

  • 相关阅读:
    Parameter Binding in ASP.NET Web API
    Which HTTP methods match up to which CRUD methods?
    ErrorHandling in asp.net web api
    HttpStatusCode
    Autofac Getting Started(默认的构造函数注入)
    Autofac Controlling Scope and Lifetime
    luvit 被忽视的lua 高性能框架(仿nodejs)
    undefined与null的区别
    VsCode中使用Emmet神器快速编写HTML代码
    字符串匹配---KMP算法
  • 原文地址:https://www.cnblogs.com/wanghong19991213/p/13438855.html
Copyright © 2020-2023  润新知