C++之基础知识一_c++定点数-程序员宅基地

技术标签: C++成长之路  

基础知识

内存变量原理

掌握赋值内存和寄存器如何配合的

_asm{
     
Mov eax, num;
Add num, 15;
Mov num, eax;
}//寄存器操作

由于cc++变量只是定义之后没有做初始化,是垃圾数据,所以要求变量一开始必须先做初始化,而python/java等语言,定义之后会默认赋值为零。

进制

int num = 012//0是八进制的表示 0x是十六进制

printf

printf不会对数据进行数据类型的转换

数据类型

  1. 二进制的位数不能无限使用,整数有一定的大小限制,只能在一定的范围之内。
  2. 内存可贵,珍惜使用
    在这里插入图片描述

计算机补码表示

-7
原码:1000 0111
反码:1111 1000
补码:1111 1001 F9

为什么要用补码表示呢?
来源于导弹的应用,追求绝对的准确。
对于原码如果正数和负数相加,需要多步操作,而对于补码,一步操作即可。
比如:
0000 1001 +9 原码表示
1000 0010 -2 原码表示
二者相加,需要比较大小,去掉符号,相减,加上符号(四步)
0000 1001 +9 补码表示
1111 1110 -2 补码表示
00000111 +7
二者相加,一步操作即可

float浮点数的二进制存储和转换

float和double在存储方式上都是遵从IEEE的规范
符号位 指数 尾数
余127码 float 1 8 23
余1023码 double 1 11 52
尾数的精度决定了有效数字的精度
float类型是6-7位,因为十进制数字9需要用四位二进制数表示。
实数是带有小数部分和整数部分的数字,也就是我们通常说的小数。
对于小数点,计算机采用了两种表示方法:定点表示法和浮点表示法
1.什么是定点表示法及定点表示法的缺点?
定点表示法:分别使用定长来表示小数和整数部分,这样会存在一个问题。如果分配的小数部分位数较短,存储3.1415926这样的数值时精度太差;反之分配给小数部分的位数较长,那么能表示的整数部分数值范围太小。
2.什么是浮点表示法以及浮点表示法的优点?
浮点表示法:等同于科学计数法,极大增加了实数可存储的范围。
无论十进制还是二进制使用浮点表示法都是由三部分组成:符号 位移量 定点部分
用科学表示法(浮点表示法)表示十进制数字 +3145600000为+3.1456×10^9
符号部分:(+),位移量:9,定点部分:(3.1456)
同理,二进制数据10101100000000.00表示为 +1.01011×2^13
同理,二进制数据-(0.0000000001011)表示为 -1.011×2^(-10)
注意:小数点左边都只保留了一位的非零数码,小数点和定点部分左边的1并没有存储是隐含的。
符号部分采用一个二进制位来存储(0或1)
尾数是指小数点右边的二进制数,定义了该数的精度,尾数是作为无符号整数存储的。如果将符号一起考虑的话可以说是通过符号加绝对值存储的
指数是可正可负的,计算机中使用余码表示法来存储指数
3.什么是余码表示法?
为了让正的和负的整数都可以作为无符号数存储,计算机通常采用余码表示法。在余码系统中,使用一个正整数(称为一个偏移量)加到每个数字中,用于把它们统一移到非负的一边。这个偏移量的值是2^(n-1)-1,n是内存单元存储指数的大小。这种新的表示法与移位前的表示法相比,其优点在于余码系统中的所有整数都是正数,当我们在这些整数上进行比较或运算时不需要考虑符号。

在学习了十进制和二进制的转换之后,对于实数最容易想到的二进制表示方法应该是区分整数部分和小数部分。将一部分字节位给整数部分,整数部分留出最左边一位给符号位,另一部分字节位给小数部分。但是这样会造成空间的浪费,比如4字节 32bit存储空间,16位给整数,16位给小数,那么对于小数部分为0时,整数还是只能用有限的16位空间。

c语言为什么要提前声明变量

 建立变量符号表
 变量的数据类型指示系统分配多少内存空间
 变量的数据类型指示了系统如何解释存储空间的值
 变量的数据类型决定了该变量的取值范围
 不同的数据类型有不同的操作

数据类型转换

自动数据类型转换与强制类型转换

操作符号

在这里插入图片描述
运算符不能相邻,但是±符号除外,因为±3实际是此处是分解为加负3
主要是四类:算数/逻辑/关系/位

赋值表达式

在这里插入图片描述

自增自减运算

在这里插入图片描述

条件运算符的结合方向

在这里插入图片描述
条件运算符的优先级仅大于赋值运算符

逻辑运算符

在这里插入图片描述

printf数据控制

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

scanf

在这里插入图片描述
在这里插入图片描述

scanf只能指定实数输入的宽度,无法指定输入的精度。输出是可以指定的
回车会被当做一个输入

在这里插入图片描述
%n统计字符数量

bool类型

C语言没有bool类型
左移移位预算,越界之后会截取高位,而不是低位

在这里插入图片描述在这里插入图片描述

float浮点数相等判断

float 类型:占4个字节,7位有效数字
double型:占8个字节,15~16位有效数字
由于浮点数的表示是不精确的,所以不能直接比较两个数字是否相等。一般比较的两个数字的差值在允许的某个范围内则认为浮点数相等。比如,两个浮点数a、b, 允许的误差范围 1 e − 6 1e^{-6} 1e6, 即 a b s ( a − b ) < = 1 e − 6 abs(a-b)<=1e^{-6} abs(ab)<=1e6, 则可以认为a和b相等。
float型变量和“零值”比较方法:

#include <stdio.h>  
  
int main(int argc, char *argv[])  
{
      
    float x = 0.000f;  
    const float EPSINON = 0.000001;  
    if (( x >= -EPSINON ) && ( x <= EPSINON ))  
    {
      
        printf("x 是零\n");  
    }  
      
    return 0;  
}  
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_37102093/article/details/115282995

智能推荐

(邱维声)高等代数课程笔记:解线性方程组的矩阵消元法_比较消元法和初等变换求线性方程组的异同,并阐述自己的收获-程序员宅基地

文章浏览阅读383次。根据邱维声老师的高等代数课程,整理的笔记。_比较消元法和初等变换求线性方程组的异同,并阐述自己的收获

android商城首页demo,FanZhengxi-程序员宅基地

文章浏览阅读281次。Android HyBridge 开发一、三种App开发方式对比1. Native App特点:UI元素、数据内容、逻辑架构都安装在手机终端,导致不可跨平台,每次版本升级都要重新打包。缺点:无法跨平台、升级麻烦、开发成本高(指跨平台开发成本高)优点:速度快,用户体验好。2. Web App定义:可理解为移动端的网站,将网页部署在服务器上,用户通过各大浏览器来访问。缺点:页面访问速度慢、用户体验差。..._安卓应用商店app demo

好烦!快让ChatGPT停止道歉!SD创作宣传图的超细教程;教你在PH冷启动薅流量;CSDN举办AI应用创新大赛 | ShowMeAI日报_inscode deecamp x csdn ai应用创新大赛-程序员宅基地

文章浏览阅读318次。Stable Diffusion 图生图知识思维导图;使用 5W1H 框架启动一个可控的AI项目;培生集团将生成式AI学习工具引入在线高等教育平台;前 Meta AI 高管离职创业,做教育类 ChatGPT 应用……点击阅读全文_inscode deecamp x csdn ai应用创新大赛

【21天算法挑战赛】查找算法——顺序查找_普通查找是顺序查找么-程序员宅基地

文章浏览阅读814次,点赞9次,收藏7次。作者简介:我目前是一个在校学生,现在不敢说自己擅长什么,但是我想通过自己的学习努力让自己的技术、知识都慢慢提升,希望我们一起学习呀~。有话想说:写博客、记笔记并不是一种自我感动,把学到的东西记在脑子里才是最重要的,在这个过程中,不要浮躁,希望我们都可以越来越优秀!由于算法不会改变原有的元素集合,只需要一个额外的变量控制索引变化,所以空间复杂度为常数级:O(1)️兴趣领域:目前偏向于前端学习 算法学习。语言说明:代码实现我会用Python/C++~空间复杂度:O(1)

【新书推荐】【2016.07】认知无线电天线设计_底层认知无线电-程序员宅基地

文章浏览阅读167次。【2016.07】认知无线电天线设计Antenna design for cognitive radio,共320页。如果需要电子版,请联系QQ:3042075372。本书从天线设计的角度阐述了认知无线电,并以一种协议的形式引入了认知无线电的概念,该协议受益于频谱中未被充分利用的区域。This one-of-a-kind new resource presents cognitive ra..._底层认知无线电

Linux基础命令-date设置时间_date设置当前日期-程序员宅基地

文章浏览阅读9.7k次,点赞5次,收藏29次。date命令来自于英文单词它自己,也就是时间、时钟的意思,其功能是用于显示或者设置系统日期与时间信息的。运维人员可以根据自己需要的格式来输出系统时间信息。_date设置当前日期

随便推点

常见python库学习(一)Tkinter库_GUI界面设计_python窗体类库-程序员宅基地

文章浏览阅读541次。提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、tkinter窗口1.简介2.Tkinter 控件二、1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、tkinter窗口1.简介Tkinter 是使用 python 进行窗口视窗设计的模块,是 python 自带的、可_python窗体类库

通过mtd读写flash_基于STM32F7通过cube软件配置:读写QSPI接口64M flash和64M PSRAM参考教程...-程序员宅基地

文章浏览阅读825次。基于STM32F7通过cube软件配置:读写QSPI接口64M flash和64M PSRAM参考教程核心板:NUCLEO-F767ZIFlash:NM25Q64EB(64M)PSRAM:IPS6404L(64M)配置文件请使用stm32cubemx打开程序请使用keil5MDK打开NUCLEO-F767ZI上引出的QSPI引脚如下,NM25Q64EB和IPS6404L都是分别接到同样..._stm32f7 单片机 64引脚

获取栅格图层(Raster)的属性表_r raster getvalue-程序员宅基地

文章浏览阅读388次。pNewRaster是你的Raster图层IRasterBandCollection pRasterBC =(IRasterBandCollection ) pNewRaster;IRasterBand pRasterBand = pRasterBC.Item(0);ITable pTable = pRasterBand.AttributeTable;IQueryFilter pQueryFilter=new QueryFilterClass ();pQueryFilter .WhereClau._r raster getvalue

python反编译class文件_python反编译之字节码-程序员宅基地

文章浏览阅读226次。如果你曾经写过或者用过 Python,你可能已经习惯了看到 Python 源代码文件;它们的名称以.Py 结尾。你可能还见过另一种类型的文件是 .pyc 结尾的,它们就是 Python “字节码”文件。(在 Python3 的时候这个 .pyc 后缀的文件不太好找了,它在一个名为__pycache__的子目录下面。).pyc文件可以防止Python每次运行时都重新解析源代码,该文件大大节省了时间。..._python反编译class文件

hdu 2084 数塔(动态规划)-程序员宅基地

文章浏览阅读38次。本题是一个经典的动态规划题。直接利用记忆化搜索:见图解Ac code :#include<stdio.h>#include<string.h>#define max(i,j) (i>j?i:j)#define maxn 105int a[maxn][maxn];int d[maxn][maxn];int s(int i,...

VMware Workstation 10.0.7 安装-程序员宅基地

文章浏览阅读2.2k次。VMware Workstation 10.0.7 安装VMware Workstation 10.0.7 官网下载地址1、点击“exe.”开始安装,选择“下一步”;2、选择“接受”,点击“下一步”;3、选择“典型”,可更改安装路径;4、取消“启动时检查产品更新”、“帮助”选项;5、默认选项,点击“下一步”;6、正在安装VMware;7、输入密钥;8、安装成..._vmware workstation 10.0.7

推荐文章

热门文章

相关标签