首页 > 编程语言 >c++里数的存储

c++里数的存储

时间:2024-07-20 15:25:25浏览次数:17  
标签:表示 存储 补码 C++ c++ 里数 类型 原码

hello,大家好啊,这里是文宇,不是文字,是文宇哦。

C++中的数的存储方式涵盖了整数、浮点数、字符等多种类型。每种类型的数有不同的位数和存储规则。下面将详细介绍C++中数的存储。

首先,整数类型的存储通常使用二进制来表示。C++中提供了多种整数类型,包括char、short、int、long long等。这些类型之间的主要区别在于所占的位数和能够表示的数值范围。

char类型通常占用1字节(8位),用于表示字符型数据。在C++中,char类型可以存储ASCII字符,范围从0到255。例如,字符'A'可以用数字65表示,字符'9'可以用数字57表示。

short类型通常占用2字节(16位),用于表示较小的整数。short类型的范围通常是-32768到32767。

int类型通常占用4字节(32位),是C++中最常用的整数类型。int类型的范围通常是-2147483648到2147483647。

long long类型通常占用8字节(64位),用于表示较大的整数。long long类型的范围通常是-9223372036854775808到9223372036854775807。

整数类型的存储采用二进制补码表示。正数和0的二进制表示与正常的二进制相同。负数的二进制表示是其正数的二进制表示取反后加1。例如,-1的二进制表示为1111 1111。

接下来,浮点数类型的存储使用IEEE 754浮点数标准。C++中有两种浮点数类型:float和double。

float类型通常占用4字节(32位),用于表示单精度浮点数。float类型的范围通常是从-3.4E38到3.4E38,可以表示大约7位有效数字。

double类型通常占用8字节(64位),用于表示双精度浮点数。double类型的范围通常是从-1.7E308到1.7E308,可以表示大约15位有效数字。

浮点数的存储采用三个部分:符号、指数和尾数。符号位表示正负,指数位表示10的幂次数,尾数位用于表示小数部分。

然后,字符类型的存储通常是通过ASCII码来表示的。C++中的char类型可以表示一个ASCII字符,占用1字节(8位)。ASCII码是一种将字符映射到数字的编码系统,包括标准ASCII码(0到127)和扩展ASCII码(128到255)。

例如,字符'A'的ASCII码是65,字符'9'的ASCII码是57。在存储字符时,将对应的ASCII码作为整数存储。

除了整数、浮点数和字符,C++还提供了其他类型的数的存储方式。

布尔类型用来表示真或假,只占用1位内存。在C++中,true表示真,false表示假。

枚举类型是一种用户自定义的类型,可以用整数来存储。枚举类型的取值范围由用户定义,每个取值都对应一个整数。例如,可以定义一个颜色枚举类型,取值为红色、绿色和蓝色,分别对应整数值0、1和2。

总的来说,C++中的数的存储方式取决于数的类型。整数类型的存储采用二进制补码表示,浮点数类型的存储使用IEEE 754浮点数标准,字符类型的存储通过ASCII码表示。除了整数、浮点数和字符,C++还提供了布尔型和枚举型等其他数的存储方式。了解数的存储方式对于理解C++中数字的表示和计算有着重要的意义。

在计算机中,数的原码、反码和补码是描述数值的三种二进制表示形式。这三种表示方式在C++中被广泛应用于整数的存储和运算中。下面我们将详细解释原码、反码和补码的概念以及它们的应用。

而下面再说一说关于c++的原码,反码和补码

1. 原码(Sign-Magnitude):原码是最基本的数值表示形式。在原码中,数值的符号位和数值部分分开存储。最高位表示符号位,0表示正数,1表示负数。例如,假设我们使用8位二进制表示数,+3的原码为 00000011,-3的原码为 10000011。

原码的优点是在人类阅读和理解上比较直观,可以直接看出数值的符号。但是,原码的缺点是存在两个0的表示形式,即正零和负零,同时对于负数的运算会比较复杂。

2. 反码(Ones' Complement):反码是对原码的一种改进。在反码中,正数的表示与原码相同,而负数的表示是对其原码的每一位取反。例如,+3的反码为 00000011,-3的反码为 11111100。

反码解决了原码中0的表示问题,只有一个零表示,避免了正零和负零的困扰。但是,反码的缺点是在负数的运算中,需要对正数和负数进行额外的处理。

3. 补码(Two's Complement):补码是最常用的数值表示形式。在补码中,正数的表示与原码和反码相同,而负数的表示是对其反码的每一位取反后再加1。例如,+3的补码为 00000011,-3的补码为 11111101。

补码解决了原码和反码中零的表示问题,并且可以进行数值运算,包括加法、减法和乘法等。补码的算术运算可以简化为二进制的运算,而无需额外处理符号位。

在C++中,整数类型的存储方式采用补码表示。这意味着在内存中存储的整数值是其补码表示形式。C++提供了不同位数的整数类型(如char、short、int、long和long long),这些类型的存储位数和表示范围取决于具体的实现。但无论存储位数如何,补码的原理和表示方式保持一致。

总的来说,C++中数的原码、反码和补码是用于描述整数的三种二进制表示形式。原码是最基本的表示形式,反码解决了原码中0的表示问题,而补码是最常用的表示形式,在数值运算中更加方便和高效。了解这些概念对于理解C++中整数的存储和运算有着重要的意义。

标签:表示,存储,补码,C++,c++,里数,类型,原码
From: https://blog.csdn.net/2401_84159494/article/details/140526719

相关文章

  • C++生化危机2.0.yl.3已更新
    本版本修复了一个BUG,邻居家无法进入已修复一些小BUG也修复完成(作者体验游戏时发现的)下载链接:生化危机2.0.yl.3.rar-蓝奏云代码如下(建议下载,因为rar解压包内内容更全):#include<bits/stdc++.h>#include<windows.h>#include<time.h>#include<conio.h>usingnamespacestd......
  • C++学习笔记
    第一章预备知识C++融合了三种不同的编程方式:过程性编程(C语言代表的)、面向对象编程(C语言基础上添加的类代表的)、泛型编程(C++模板支持)。Linux上源代码文件编译完后生成后缀.o的目标代码文件,然后执行链接后生成文件名为a.out(默认取名)的可执行程序。C++源文件名的后缀有.cpp......
  • FFmpeg开发笔记(三十九)给Visual Studio的C++工程集成FFmpeg
    ​《FFmpeg开发实战:从零基础到短视频上线》一书的“第11章 FFmpeg的桌面开发”介绍了如何在Windows环境对Qt结合FFmpeg实现桌面程序,那么Windows系统通过VisualStudio开发桌面程序也是很常见的,下面就介绍如何在VisualStudio的C++工程中集成FFmpeg库和SDL2库。首先按照《FFmpe......
  • c++零基础知识要点整理(5)
    1.位与运算符:& (位与:代表把二进制的每个数的每一位从低到高进行运算(有0必0))逻辑与:&&(有假必假)(1)位与的定义:inta=0b1001;//0b1001是二进制表示法,0b代表用二进制表示,0b1001对应十进制数为:9intb=0b0101;//对应十进制数为:5a&b=0b0001;//12.位或运算符:| (有1即1)逻辑或:||......
  • c++中static_cast的用法
    在C++中,`static_cast`是一种用于执行静态类型转换的运算符。它用于在编译时进行类型转换,包括隐式和显式类型转换,但不能用于转换具有无关类型的指针。`static_cast`可以用于以下情况:1.隐式类型转换:`static_cast`可以在不丢失信息的情况下执行隐式类型转换,例如将整数类型......
  • c++中const_cast和dynamic_cast的用法
    `const_cast`和`dynamic_cast`是C++中的两个类型转换运算符,用于转换指针或引用的类型。它们的使用方式如下:1.`const_cast`:  -`const_cast`用于去除指针或引用的`const`或`volatile`限定符,以便对其进行修改。  -`const_cast`只能用于转换掉对象的常量性,......
  • [C++]优先级队列
    1.了解优先级队列优先级队列是一种容器适配器,根据一些严格的弱排序标准,专门设计使其第一个元素始终是它所包含的元素中最大的元素。此上下文类似于堆,其中可以随时插入元素,并且只能检索最大堆元素(优先级队列中顶部的元素)。优先级队列是作为容器适配器实现的,容器适配器是使......
  • [C++初阶]deque的讲解
    1.deque介绍          Deque是双端队列的不规则缩写。双端队列是具有动态大小的序列容器,可以在两端扩展或收缩。特定的库可能以不同的方式实现deque,通常是某种形式的动态数组。在任何情况下,它们都允许通过随机访问迭代器直接访问单个元素,并根据需要通过扩展和收缩......
  • Windows图形界面(GUI)-DLG-C/C++ - 工具栏(ToolBar)
    公开视频-> 链接点击跳转公开课程博客首页-> ​​​​​​链接点击跳转博客主页目录工具栏(ToolBar)创建工具栏-CreateWindowEx初始工具栏-TB_BUTTONSTRUCTSIZE工具栏图标-TBADDBITMAP-TB_ADDBITMAP工具栏按钮-TB_ADDBUTTONS示例代码工具栏(ToolBar)......
  • Windows图形界面(GUI)-DLG-C/C++ - 滑动条(Trackbar)
    公开视频-> 链接点击跳转公开课程博客首页-> ​​​​​​链接点击跳转博客主页目录滑动条(Trackbar)使用场景初始控件控件消息示例代码滑动条(Trackbar)使用场景音量控制亮度调节视频播放进度控制任何需要用户在特定范围内选择值的场景初始控件TBM_......