zoukankan      html  css  js  c++  java
  • 数据类型取值范围计算

    之前一直不清楚数据类型的取值范围是怎么计算的,现在弄懂了,记录一下。

    char型示例

    signed char类型取值范围计算[1]

    假设一个字符型变量占用一个字节,也就是8个二进制位(bit),由于是signed,所以最高为可以为1(负数)或0(正数)。

    • 当最高位为1时,能表示的范围是【1000 0000】-【1111 1111】。然后按照二进制转十进制的规则计算,二进制“1000 0000”将8bit全部取反,变成“0111 1111”,再加上1变成“1000 0000”,此时按照无符号数来计算,其十进制为128,加上负号变为-128。“1111 1111”根据相同规则转换为十进制数-1。其取值范围为【-128,-1】。
    • 当最高位为0时,能表示的范围是【0000 0000】-【0111 1111】。二进制“0000 0000”的十进制为0,“0111 1111”的十进制为“(2^{6})+(2^{5})+(2^{4})+(2^{3})+(2^{2})+(2^{1})+(2^{0}) = 127,因此符号位为0时,其取值范围为【0,127】。

    结合两种情况,整个signed char类型的取值范围为【-128,127】。

    unsigned char类型取值范围计算

    unsigned是无符号的,所以它能表示的范围是【0000 0000】-【1111 1111】,将范围转化为十进制数为【0,255】。

    其他类型

    其他类型以此类推。

    Reference



    1. https://zhuanlan.zhihu.com/p/25755257 ↩︎

  • 相关阅读:
    观察者模式
    策略模式
    设计模式之Template Method
    面向对象设计原则
    设计模式简介
    封装Server类和Client类
    为客户端添加输入线程
    客户端升级为select网路模型
    将服务端select设置为非阻塞,处理更多业务
    Laradock 使用中遇到的问题汇总
  • 原文地址:https://www.cnblogs.com/huerxiong/p/10488501.html
Copyright © 2011-2022 走看看