zoukankan      html  css  js  c++  java
  • C++中的最大整数最小整数

    调用<limits.h>

    INT_MIN, INT_MAX

    利用原码、补码、反码及位运算

    1. 机器数与真值
      机器数:在计算机中实际存储的数,如0000 0001
      真值:去掉符号位,根据编码规则推导出的真实值
    2. 原码
      原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值。(一种非常容易理解的方式)

    正负1的原码表示:

    [+1] = 0000 0001
    [-1] = 1000 0001
    

    8位二进制数,原码能表示的范围为:

    [0111 1111 1111 1111]---->[2^7-1 -2^7-1]---->[-127 127]
    
    1. 反码
      反码就是在原码的基础上,符号位不变,其余位取反。 (显然,正数的反码还是本身)
      正负1的反码表示:
    [+1] = 0111 1110
    [-1] = 1111 1110
    
    1. 补码
      正数的补码就是本身,复数的补码就是其反码加一
      正负1的补码表示:
    [+1] = 0000 0001 (补)
    [-1] = 1111 1110(反)= 1111 1111(补) 
    
    1. 为什么要用补码进行运算?
      将减法简化为加法(减去一个正数等于加上这个正数的相反数),且保持只有一个0的表示。(https://blog.csdn.net/wo17fang/article/details/52241682)

    6.表示最大最小的整数
    看了上面的解释,下面的定义就是自然而然了

    int max_int = 0b0111 1111 1111 1111;
    int min_int = max_int+1;
    

    进一步简写为:

    #define MAX_INT (((unsigned int)(-1))>>1)
    #define MIN_INT MAX_INT+1
    
  • 相关阅读:
    vue2.0是不支持通过下标来更改数组的,无法做到响应式
    C# 深拷贝 Bitmap对象示例
    vscode终端中文乱码
    TkbmMemTable使用总结
    openssl 证书概念介绍
    openssl源码介绍
    python变量赋值特性
    openssl安装
    github开源协议选择
    NLP 多分类神经网络
  • 原文地址:https://www.cnblogs.com/maxwell-maxwill/p/15405312.html
Copyright © 2011-2022 走看看