内存数据存储方式,基本数据类型在内存中如何存储

  内存数据存储方式,基本数据类型在内存中如何存储

  前言:大家好。今天,我们将解释数据是如何存储在内存中的。本章分为两部分。第一部分是给大家介绍原码、逆码、补码的概念。第二部分是如何判断内存中是否存在有符号数的取值范围。期间会插入两个经典问题和你一起回答。我们开始吧。

  正文的第一部分源代码==源代码实际上是把整数转换成二进制的形式==

  比如我们的int a=10,那么我的原代码就是

  000 0000 0000 0000 0000 0000 0000 0000 0000 1010-原始代码

  当我们的int a=-10时,那么我们的原始代码是

  100 0000 0000 0000 0000 0000 0000 1010-原始代码

  你可以看到不同之处。这两个数的第一个二进制是0和1。那是因为,在有符号二进制中,第一个二进制数中0为正,1为负,所以你可以看到-10的第一位是1。

  二进制转换是这样进行的:

  详情见《明解C语言入门篇》。

  码int a=10的倒数为

  000 0000 0000 0000 0000 0000 0000 0000 1010-相反的代码

  当int a=-10时,他的逆代码是

  111 111 111 1111 1111 1111 1111 1111 1111 0101-逆代码

  在二进制中,正整数的原码、反码和补码都是一样的,所以上面int a=10的反码和原码是一样的。反码是指符号位不变,其他位逐位反转。

  补码int a=10补码

  000 0000 0000 0000 0000 0000 0000 1010-补充

  int a=-10的补码

  111 111 111 1111 1111 1111 1111 1111 1111 0110-补充

  可以认为补码是在反码的基础上做的补丁,经过修正,所以叫“补码”。

  原码、逆码、补码的概念只对负数有实际意义。对于正数,原码、逆码、补码都是一样的。

  所以我们可以理解为:

  下面做一道题。

  这个问题,你可能会说,太简单了,没有技术含量。别担心,让我们向您展示二进制是如何在编译器中计算的:

  这就是我们的计算机执行二进制算法的过程,所有的算法都变成了补码,这样它只需要加法,除了加法之外没有任何运算。

  由于整数在内存中是用补码表示的,所以计算机不需要区分符号位和数值位,通过设计一个简单的加法电路就可以同时实现加法和减法,效率非常高,大大简化了计算机的硬件电路。

  第二部分是如何判断内存中是否有符号数的取值范围。

  我先给你介绍两种英语。

  无符号(无符号数)

  有符号(有符号的数字)

  我们以int为例,

  无符号整数

  有符号整数

  (同Internationalorganizations)国际组织

  这三种类型中

  有符号int和int的类型是一样的,都是有符号数,所以我们可以认为有符号可以省略。

  我给你看一个问题,你可以思考一下。

  !

  好了,看完这个问题的答案会是什么?-128,128,或者别的,那我带你去答。

  下面是char类型的原码,补码,补码。

  接下来,我们可以计算他的原始代码的值变成了一个十进制数,

  让我们来看看电脑的操作。

  一模一样,那么你可能会问,什么是整容,给你解释一下:

  这可能意味着

  如果我是一个char数,我想打印%d或者%u,因为%d和%u都是塑料,所以我需要把我的8位二进制数提升到32位,这样我就可以给你画图了。

  你可以看到蓝框中的那个,那个数字就是我们想要重塑和升级的符号位。因为我们的第一个符号位是0,后面直接用0到32位填充。

  另外,给大家看看符号位是1,二进制数是如何整形改进的。

  两张图都是通过带符号的数字来塑造和提升的。接下来,让我们向您展示如何塑造和改善无符号数。

  这是塑料促销,但你可能会问,嗯?为什么你上一个问题的塑料升级明明是%u为什么不补充0和1?让我给你解释一下。因为我们打印%u但是我们的char类型是有符号数,所以我们的plastic upgrade是基于类型的,也就是说,如果我们是无符号char,那么我们的plastic upgrade就意味着所有其他位都用0来补充。

  最后一个是这个,但是在我们上面的问题中,它的char类型是有符号数,所以塑形提升是按照最左边的第一个数来判断的。如果是1,则加1,如果是0,则加0,直到填满32位。

  好了,本文是数据记忆的初级阶段。以后高级阶段会按照时间来写,很多经典问题都会在高级阶段讲解。感谢观看!

  ,

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • office2010激活密钥大全 怎么永久激活office2010
  • project2010产品密钥免费_project2010激活密钥永久激活码
  • c语言调用退出函数 c语言退出整个程序怎么写
  • c语言中怎么给函数初始化 c语言的初始化语句
  • c语言编写函数计算平均值 c语言求平均函数
  • chatgpt是什么?为什么这么火?
  • ChatGPT为什么注册不了?OpenAI ChatGPT的账号哪里可以注册?
  • OpenAI ChatGPT怎么注册账号?ChatGPT账号注册教程
  • chatgpt什么意思,什么是ChatGPT ?
  • CAD中怎么复制图形标注尺寸不变,CAD中怎么复制图形线性不变
  • cad中怎么创建并使用脚本文件,cad怎么运行脚本
  • cad中快速计算器的功能,cad怎么快速计算
  • cad中快速修改单位的方法有哪些,cad中快速修改单位的方法是
  • cad中心点画椭圆怎么做,cad轴测图怎么画椭圆
  • CAD中常用的快捷键,cad各种快捷键的用法
  • 留言与评论(共有 条评论)
       
    验证码: