C++负数、小数如何保存
负整数
正整数直接按照源码存储,负整数按照补码存储。
原码、反码、补码
首先要清楚原码、反码、补码:
计算机中一个字节为8位,在此以一个字节为例:
原码:
十进制1:0000 0001
十进制-1:1000 0001(负数的符号位为1)
反码:
十进制1:0000 00001
十进制-1:1111 1110(除符号位外,其余反转)
补码:
十进制1:0000 00001
十进制-1:1111 1111(负数的补码为负数的反码+1)
因此,正数的原码、反码、补码相同,负数的原码、反码、补码各不相同。
反码、补码作用
引入补码,是为了计算负数的加法,也可以看做减法。比如10-1,如果按原码计算的话:
(0000 1010 + 1000 0001) = 1000 1011 = -11,错误。
因此需要使用补码进行计算:
(0000 1010 + 1111 1111) = 1 0000 1001 = 0000 1001 = 9。
引入反码、补码是为了更容易的计算减法。可以将减法看做加一个负数,然后取负数的补码进行计算。
计算机以补码的形式存储小数。
范围
对于单字节无符号整形,占8位,范围为:0000 0000~1111 1111,即0~255。
对于单字节有符号整形,占8位,正数范围为:0000 0001~0111 1111,即1~127,
负数范围为:1000 0001~1111 1111,即-1~-127。
小数
参考:
https://blog.csdn.net/ACdreamers/article/details/19012279?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-4.control&dist_request_id=1328603.58325.16151918506269985&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-4.control
小数的整数、小数部分分别用二进制表示:
如6.75转换为二进制:6转换为0110,0.75转换为:11。所以6.75可以表示为(0110.11)2
小数的存储
小数的存储分为3位:符号位、指数位、尾数位。
符号位:0:正数,1:负数
指数位:127+指数转为二进制数
尾数为:小数转为二进制数后,用科学计数法表示后的尾数
如173.8125转换为二进制:10101101.1101,用科学计数法表示为:1.01011011101*10^7。则符号位为0,指数位为:(127+7)2,即10000110,尾数位为:01011011101。则173.8125在计算机中存储为:
0 1000 0110 0101 1011 1010
相关文章:

MySQL00-这都不知道还TM学啥MySQL
目录 一、MySQL架构概述 1.1、客户端连接器 1.2、连接层 1.3、可插拔存储引擎 1.4、文件系统与文件 二、配置文件 三、数据文件 四、日志文件(以MySQL5.7.32为例) 4.1、错误日志 Error Log 4.2、一般查询日志 General Query Log 4.3、二进制日…

ORB_SLAM2 PnPSolver
EPNP:已知4组(默认)3D-2D匹配点,构建参考点,通过计算参考点的相机坐标,线性组合成路标点的相机坐标。然后使用ICP估计相机间的位姿变换。 需要注意的事,EPNP可以同时使用N组路标点构建M矩阵…

iOS开发UI篇—多控制器和导航控制器简单介绍
iOS开发UI篇—多控制器和导航控制器简单介绍 一、多控制器 一个iOS的app很少只由一个控制器组成,除非这个app极其简单。当app中有多个控制器的时候,我们就需要对这些控制器进行管理 有多个view时,可以用一个大的view去管理1个或者多个小view,控制器也是如…

值传递 和 地址传递 的区别(好多句话才可以说清)
要知道什么是**值传递**和**地址传递**,首先要知道什么是**基本数据类型**和**引用类型**。 Java的基本数据类型就八种(除了这八种之外都是引用类型):◆整型:byte(8位) short(16位) int(32位) long(64位)࿱…

日期类的时间从为什么是从1970年1月1日(格林威治时间)
I suspect that Java was born and raised on a UNIX system.UNIX considers the epoch (when did time begin) to be midnight, January 1, 1970.是说java起源于UNIX系统,而UNIX认为1970年1月1日0点是时间纪元. 但这依然没很好的解释"为什么",出于好奇&a…

MySQL从5.7.32升级到8.0.22
目录 一、备份与导出数据 二、升级到MySQL-8.0.22同时解决字符集问题 2.1、卸载MySQL-5.7.32 2.2、安装MySQL-8.0.22 2.3、修改配置文件 my.cnf 三、导入数据及配置 3.1、重新创建数据库wordpress 3.2、导入表结构和数据 3.3、启动httpd 今天,贫僧的个人博客…

50个顶级开源营销应用程序
显然,开源营销应用程序占有一席之地。如今,营销部门负责相当大比例的企业应用程序购买和部署决策。事实上,Gartner预测,到2017年,首席营销官(CMO)将比首席信息官(CIO)在I…

C++乘法的int越界问题
在做Leetcode 69. x 的平方根,出现了两种int越界的情况: 整数相乘越界 if(mid * mid < x)这样写的话,mid * mid可能越界,因此可以改为 if(mid < x/mid)整数本身越界 int n_r x;Leetcode给了个例子,x 21474…

C# DataSet与DataTable的区别和用法
DataSet是数据集,DataTable是数据表,DataSet存储多个DataTable。DataSet和DataTable像是专门存储数据的一个容器,在你查询数据库得到一些结果时可以存在里面。 DataSet功能强大有浏览、排序、搜索、过滤、处理分级数据、缓存更改等功能&#…

Java代码块总结(速读版)
**代码块必须直接定义在类中**,有两种:静态代码块 和 非静态代码块 静态代码块是在类(class文件)加载内存时执行,而非静态代码块是在创建对象(new 类名();)时执行。public class Test{static{ …

matplotlib01-plot折线图、scatter散点图
目录 一、plot绘制折线图一般用法 二、scatter绘制散点图一般用法 记录一下数据可视化的python库matplotlib,研究并纪录一下。 matplotlib.pyplot.subplots函数。subplots可以绘制一个或多个图表。返回变量fig表示整张图片,变量ax表示图片中的各个图表…

C++const关键字作用
修饰普通变量,表示不可修改(在定义的时候必须初始化) #include <iostream> using namespace std; const int a1 10; int main() {const int a3; // 错误,没有初始化const int a2 10;a1 10; // 错误,不可修…

系统设计规范化攻克了什么问题
系统设计规范化攻克了什么问题(一) 大家好,今天总结下我从事开发工作这几年里,对于项目规范化的一点想法和感触. 在笔者心里,规范是为了解决这个问题而存在的,某些规范都是为了相应问题而存在的.所以仅仅要是能解决这个问题的文档,声明都是规范. 在某时開始设计系统,带人做系统…

五分钟让你了解 Java方法(或者叫函数)
Java方法(函数)的形式如下: 访问权限 [修饰符] 返回值类型 方法名([参数列表]){方法体 } 访问权限:控制方法(函数)能否在其他“类”中使用有public(可以在其他类中使用),protected,private(只能在该类中使用…

Bootstrap笔记
Bootstrap使用: 下载Bootstrap,用于生产环境的 Bootstrap不需要安装解压文件到任意目录创建index.html,在该页面编写代码页面起始位置添加<link rel"stylesheet" href"解压文件中css/bootstrap.min.css的路径"/>转…

Apache2.4.x下proxy_module、proxy_fcgi_module结合PHP-FPM解决内存不足问题
目录 一、背景 二、问题 三、解决方案 一、背景 最近对贫僧的个人页https://stackoperator.top进行升级,将Apache升级到2.4.46,PHP升级到7.4.15。升级后没啥问题,但是第二天却宕机了。经过查证是内存不足,导致mysql服务宕机了…

两分钟让你知道什么是“Java重载”
重载:顾名思义,就是重复负载的意思,具体到Java 就是方法名相同(重复使用),但参数列表不同。 我们通过几个Java方法来具体说明:public class Addition{public int add(int a, int b){return ab;}…

C++ static
(1)static表示静态变量。局部变量存储在栈区,在{}结束时被释放。而static修饰的变量存储在全局区,在程序结束时被释放。 (2)static修饰的变量在外部文件中无法调用,即使使用extern也无法调用。其…

TCO 2015 1A Hard.Revmatching(Hall定理)
\(Description\) 给定一个\(n\)个点的二分图,每条边有边权。求一个边权最小的边集,使得删除该边集后不存在完备匹配。\(n\leq20\)。 \(Solution\) 设点集为\(S\),与\(S\)中的点相邻的点的并集为\(N(S)\)。 由Hall定理,若存在点集\…

20169211 2016-2017-2 《移动平台开发实践》 第十周实验总结
实验一:简易计算器 实验要求 实现一个简易计算器Calc,支持 - * / 和%运算, 从命令行传入计算数据,比如:java Calc 2 3 结果为 2 3 5 java Calc 8 - 3 结果为 8 - 3 5 java Calc 2 * 3 结果为2 * 3 6 java Calc 10 / 2 结…

wordpress从apache迁移到nginx
目录 一、安装nginx 二、配置文件准备 2.1、进程运行用户 2.2、虚拟主机 2.3、重定向 三、迁移 庚子鼠年最后几天,贫僧发现了内存不足的问题,并在Apache2.4.x下proxy_module、proxy_fcgi_module结合PHP-FPM解决内存不足问题一文中阐述了解决方案。…

zabbix4.0搭建(基于CentOS6.8)
环境服务端:188.188.3.241,系统:centos6.8,mysql:5.7.3,php:5.4.9,nginx:1.12.0一、nginx编译安装NGINX_VERSION1.12.0yum -y install pcre-devel openssl-develcd /usr/…

[Ahoi2008]Meet 紧急集合
1787: [Ahoi2008]Meet 紧急集合 Time Limit: 20 Sec Memory Limit: 162 MBhttp://www.lydsy.com/JudgeOnline/problem.php?id1787Description Input Output Sample Input 6 4 1 2 2 3 2 4 4 5 5 6 4 5 6 6 3 1 2 4 4 6 6 6 Sample Output 5 2 2 5 4 1 6 0 HINT S…

C++ 回调函数
函数指针 函数指针是一种指针,具体来说是:指向函数入口地址的指针。 #include <iostream> using namespace std; double function_t(int val) {return val; } int main() {double (*ptr)(int); // 创建一个函数指针,返回值为doubl…

想知道什么是“成员变量”吗?
成员变量是直接定义在“类”中的量; 特点:成员变量有默认值,具体请看表格 数据类型默认值整型0浮点型0.0char’ ’booleanfalse其他类型null 成员变量的作用就是可以详细描述对象信息 我们来举个例子: public class UserInfo{int age;doubl…

Linux09-网络配置
目录 一、网络配置基础 1.1、网络接口 1.2、设置主机名 二、nmcli配置网络 2.1、配置固定的IP地址等 2.2、连接wifi 三、链路聚合等 一、网络配置基础 1.1、网络接口 先来对比一下RHEL6、RHEL7关于网络接口上的一些差别。 RHEL6 RHEL7 配置文件位置 /etc/sysconfig…

VScode配置ROS环境
创建一个文件夹 使用catkin_make编译工作空间的根目录 使用VScode打开 VScode 中编译 ros 快捷键 ctrl shift B 调用编译,选择:catkin_make:build 可以点击配置(右边的小齿轮),修改.vscode/tasks.json 文件 { // 有关 tasks.j…

从Excel中导入数据时,提示“未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序”的解决办法...
注意,64位系统,用64位的补丁文件; https://www.cnblogs.com/A2008A/articles/2438962.html 操作系统:使用的是64位的Windows Server 2008 解决办法: 这是由于该计算机上没有安装Microsoft Access数据库引擎组件,该组件…

天兔(Lepus)监控系统慢查询分析平台安装配置
转http://suifu.blog.51cto.com/9167728/1770672 被监控端要安装pt工具 1234[rootHE1~]## yum -y install perl-IO-Socket-SSL[rootHE1~]## yum -y install perl-DBI[rootHE1~]## yum -y install perl-DBD-MySQL[rootHE1~]## yum -y install perl-Time-HiRes[rootHE1~]# tar xv…

五分钟让你搞懂什么是“构造方法”
构造方法的形式:类名([参数列表]){} 特点:- 构造方法没有返回值,就算void也不能有,这点与Java方法(或叫函数)不一样;- 一个类中默认无参构造方法,但是当定义了一个有参构造方法时,则默认无参构造…