• C中的数据存储形式


    首先介绍一下原码、反码和补码的概念:

    原码:符号位用0表示正号,用1表示负号,数值一般用二进制形式表示。

    反码:正数的反码与原码相同,负数的反码是对原码(除符号位)按位取反。

    补码:正数的补码与原码相同,负数的补码是对它的原码(除符号位外)各位取反,并在末位加1而得到的(或者说是原码的绝对值按位取反后在末位加1)。

    注意:0用原码有两种表示方法:00…0(+0)或100…0(-0),用反码有两种表示方法:00…0或111…1,用补码只有一种表示方法:000…0。

    下面介绍一个各种数据类型的存储形式:

    1.  整形数据

    采用补码形式存放在内存中。对于int型数据,如果不指定unsigned或指定signed,则存储单元中最高位代表符号(0位正,1位负);如果指定unsigned,为无符号型,存储单元全部二进位用作存放数据本身,而不包括符号。

    下面是常见的数的存储形式:

    有符号整形变量a = 32767:

    0

    1

    1

    1

    1

    1

    1

    1

    1

    1

    1

    1

    1

    1

    1

    1

    符号位

    有符号整形变量a = -32768:

    1

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    符号位

    (注意:int型范围(特指在Turbo C中)是-32768~32767,因此32767+1之后并不是32768,却变成了-32768,可以看出10…0的确是-32768的补码)

    无符号整型变量b = 65535:

    1

    1

    1

    1

    1

    1

    1

    1

    1

    1

    1

    1

    1

    1

    1

    1

    代表数据的第1位

    (注意:无符号型相对于符号型变量来说,其正数范围扩大一倍)

    2.  实型数据

    实型变量有2中表示方法,小数形式和指数形式(123e3或123E3,注意e/E之前必须有数字,后面指数必须为整数)。在内存中,实数形式是按照指数形式存储的,系统把一个实数数据分成小数部分和指数部分分别存放。

    3.  字符常量

    字符常量是把它对应的ASCII码(整形变量)值放在内存中(最终是二进制)。

  • 相关阅读:
    瀑布流事件
    js 面向对象 模拟日历
    leetcode 戳气球
    leetcode 地下城游戏
    laravel服务容器
    lru缓存策略
    php实现7种常见排序
    curl请求中http头的几种格式
    wireshark过滤规则(两年前记录在qq空间的日志)
    screen和nohub及&用法
  • 原文地址:https://www.cnblogs.com/purplec/p/5561356.html
Copyright © 2020-2023  润新知