请问,实数用4个字节mysql 存储字节,其中阶码部分战一个字节,那输入的绝对值最大的十进制整数是多少

您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
北理工机电学院大学计算机基础实验报告学号第二次实验报告.doc 2页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
下载提示
1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
需要金币:150 &&
北理工机电学院大学计算机基础实验报告学号第二次实验报告
你可能关注的文档:
··········
··········
五、实验报告
实验名称:计算机中的数据表示与计算
实验时间:
实验报告表2-1 数值型数据在计算机中的二进制实验记录表
十进制整数分类 输入十进制整数 内存整型数据 内存地址号
任意正整数 7
任意负整数 -5
最小数 -08
绝对值最小数 0 A
绝对值最大数 -08
十进制实数分类 输入十进制实数 内存实型数据
尾数部分 阶码 阶码的数学表示
任意正实数 2.2
任意负实数 -2.2
最大数 99.11 6
最小数 -99.11 6
绝对值最小数 0
绝对值最大数 99.11 6
说明:本实验对计算机内存数据的存放拟定为:①整数用两个字节存储,并负数只考虑原码;②实数用4个字节存储,其中阶码部分占一个字节。
实验报告表2-2
其他进制数据与二进制转化实验记录表
其他进制 实验数据 二进制
十进制 6 110
八进制 7 111
十六进制 A 1010
实验报告表2-3 数据的原码、补码和反码表示实验记录表
正十进制数 113 负十进制数 -103
实验报告表2-4
二进制算术运算实验记录表
操作数一 操作数二 运算符 是否溢出 实验结果 正确结果 溢出对结果产生了什么影响?
56 25 - 否 31 31 结果正负及数值均改变
78 69 + 是 -109 147
-78 69 - 是 109 -147
实验报告表2-5溢出实验记录表
问题 简要回答
什么时候出现溢出情况? 最高存储位进位时发生溢出情况。即超过8位数。
实验报告表2-6浮点数的小数点浮动实验记录表
十进制数 二进制数
表示范围 7~-19
实验报考表2-7 表示浮点数的二进制串中阶码位数改变实验记录表
阶码位数 二进制数 精度 有效位 表示范围
学号-姓名-实验二 实验报告
正在加载中,请稍后...IEEE 754单精度浮点数转十进制 / 十进制转单精度浮点数 / 在线转换
IEEE 754 单精度浮点数转换
。发布日期: &&来源:
>>| &2013 上太仪表 服务热线:029-,传真:029-, 产品中心:十进制(1.25)的单精度浮点数值:3FA00000,()
请输入数值:
长度(1~25)转换类型:十进制转单精度浮点数&
单精度浮点数转十进制&
STM明渠流量计MODBUS协议返回包&
浮点数转换功能已嵌入公众号!更多超级计算器功能,支持复杂多项式计算,包括加+、减-、乘*、除\、开方@、指数^ 操作符、16进制运算,并支持多级括号嵌套。欢迎关注使用!【说明】1、单精度浮点数用来表示带有小数部分的实数,IEEE754规定,单精度浮点数用4个字节存储,包括符号位1位,阶码8位,尾数23位。其数值范围为-3.4E-38~3.4E+38,单精度浮点数最多有7位有效小数;2、字节在内存中的排列顺序,intel的cpu按little endian顺序(低字节在前),motorola的cpu按big endian顺序(高字节在前)排列。本例是采用后者;3、浮点数转十进制选项也可以解包本公司modbus协议返回包(18字节,如:006F63)4、浮点数值表示;
Shannxi Shang-tai AIC Co., LTD结构的数据成员各自占用一块内存空间, 它们形成一个整体, 所占空间是全部成员所占空间的总和。联合与此不同, 它的数据成员重叠挤占同一段内存空间, 有点像&一套班子, 多块招牌&, 它们形成的整体, 所占空间取成员中占用空间最大者。下图表示了结构和联合与区别:
struct A {&&&&&&&&};
结构A拥有2个成员:&&&&x: 4字节, 整数&&&&y: 4字节, 单精度实数两个成员各自分配内存空间整个结构占空间8字节
union B {&&&&&&&&};
联合B拥有2个成员:&&&&x: 4字节, 整数&&&&y: 4字节, 单精度实数两个成员挤占同一段内存空间整个联合占空间4字节
在程序设计中, 联合一般用于把同一段内存空间, 根据不同的情况存储不同类型的数据。下面以几何图形为例说明结构和联合的用法。
对于点, 需要保存该点的横坐标x和纵坐标y; 对于直线, 需要保存直线方程ax + by + c = 0的三个系数; 对于矩形, 需要保存两个点 && 左上角p1和右下角p2的坐标; 对于圆, 需要保存圆心点center的坐标和半径radius等, 下面是点、线、矩形和圆的结构定义:
POINT结构表示点, 它有两个成员, 分别是点的横坐标x(实数)和纵坐标y(实数):
struct POINT { // 点(16字节)&&&&double x, // 坐标: (x, y)};
LINE结构表示直线, 它有三个成员, 分别是直线方程的三个系数(实数):
struct LINE { // 线(24字节)&&&&double a, b, // 直线方程: ax + by + c = 0};
RECT结构表示矩形, 它有两个成员, 分别是左上角和右下角的点(POINT结构):
struct RECT { // 矩形(32字节)&&&&POINT p1, p2; // 两点: 左上角和右下角};
CIRCLE结构表示圆, 它有两个成员, 分别表示圆心点(POINT结构)和半径(实数):
struct CIRCLE { // 圆(24字节)&&&&POINT // 圆心&&&& // 半径};
对于一个几何图形, 它要么是点, 要么是直线, 要么是矩形, 要么是圆, ...。它不可能既是点, 又是线, 所以只需要用一套内存空间来表示即可。这里可以用联合来表示它:
union SHAPE { // 几何图形(32字节)&&&&POINT // 点(16字节)&&&&LINE // 直线(24字节)&&&&RECT // 矩形(32字节)&&&&CIRCLE // 圆(24字节)};
虽然从理论上说可以这么做, 但实际使用时却不方便, 因为我们并不清楚这个联合现在到底表示的是什么! 下面是改进的方案, 增设一个标记成员来识辨现在的图形到底是什么! 我们当然可以用编号来表示, 比如: 0 - 表示点, 1 - 表示直线, 2 - 表示矩形, 3 - 表示圆, ...。为了方便, 使用枚举来代替编码, 更直观:
enum SHAPE_TAG {point, line, rect, circle}; // 图形标识类(枚举)
SHAPE_TAG是枚举类型名, 该类型可取的值有: point, line, rect, circle, 这四个单词分别表示整数0, 1, 2, 3, 用来表示图形类别编号。下面是几何图形的结构定义, 在结构中嵌套了一个无名的联合:
struct SHAPE { // 几何图形结构(36字节)&&&&SHAPE_TAG // 图形标记(4字节);&&&&union { // 图形联合体(32字节)&&&&&&&&POINT // 点&&&&&&&&LINE // 直线&&&&&&&&RECT // 矩形&&&&&&&&CIRCLE // 圆&&&&};};
p, l, r 或 c
在几何图形结构里, 有两个成员, 一个是图形标记(枚举, 4字节), 另一个是一个图形联合体(32字节), 它要么是点p(16字节), 要么是直线l(24字节), 要么是矩形r(32字节), 要么是圆c(24字节)。
C++除对结构(struct)进行了扩充以外, 还对联合(union)进行了扩充。在联合中, 不仅可以包含数据成员, 还可以包含成员函数, 和结构中的成员函数相同。
下面来研究一下CPU内部实数的表示方法。整数的表示方法大家都比较熟悉: 有符号的整数在大多数机器里, 都采用补码来表示。而实数的表示方法却比较复杂, 从理论上说, 实数用科学计数法表示。例如:
5.125 = (101.001)2 = (1.01001 & 1010)2
单精度实数(32位)的存储格式为:
0 - 表示正数, 1 - 表示负数
用移码表示的指数, 即: 指数 + 增量(127), 10 + 1111111 =
小数部分(不含小数点前的1):
一般移码是将原码最高位求反, 即的移码为, 相当于增加128; 而Intel的增量为127。小数点前的数字1是有效数字, 应该保存它, 但由于非零二进制实数小数点前的数字只可能是1, Intel的为了节省存储空间, 没有保留这个1, 做计算时将它还原出来, 计算完毕又去掉它。对于特殊的实数0, 则以32位全0数码来表示。
即: 5.125在机内的32位编码是10 00 , 用十六进制数书写则是: 40a40000。
下面是一个小程序, 从键盘输入实数, 然后在屏幕上输出该实数的十六进制编码; 或者从键盘输入编码, 然后在屏幕上显示对应的该实数。要实现这个功能, 就必须把4个字节的内存空间, 时而看成是单精度实数, 时而看成是无符号整数, 这正是联合的含义。程序如下:
#ifndef _FLOAT_H_#define _FLOAT_H_
union FLOAT {&&&& // 实数值&&&& // 编码(无符号整数)&&&&void InputValue(); // 输入实数值&&&&void OutputValue() // 输出实数值&&&&void InputCode(); // 输入编码&&&&void OutputCode() // 输出编码};
#include &iostream&
#include &float.h&
void FLOAT::InputValue() {&&&&cout && &请输入实数值: &; cin &&}
void FLOAT::OutputValue() const {&&&&cout && &实数值: & && value &&}
void FLOAT::InputCode() {&&&&long flag = cin.setf(ios::hex, ios::basefield); // 保存原格式, 变为十六进制输入格式&&&&cout && &请输入实数编码(十六进制): &; cin &&&&&&cin.setf(flag); // 恢复原格式}
void FLOAT::OutputCode() const {&&&&long flag = cout.setf(ios::hex, ios::basefield); // 保存原格式, 变为十六进制输出格式&&&&cout.width(8); // 设置显示宽度&&&&cout && &实数编码(十六进制): & && code &&&&&&cout.setf(flag); // 恢复原格式}
#include &iostream&
#include &float.h&
int main() {&&&&FLOAT&&&&a.InputValue(); // 输入实数值&&&&a.OutputCode(); // 输出十六进制编码&&&&a.InputCode(); // 输入十六进制编码&&&&a.OutputValue(); // 输出实数值&&&&return 0;}
程序运行的结果如下:
请输入实数值: <font color="#.125实数编码(十六进制): 40a40000请输入实数编码(十六进制): <font color="#ff157f实数值: 6.023e+023
本文已收录于以下专栏:
相关文章推荐
一、 为什么写这个文章
1、定义FILE指针并打开文件
if((fp = fopen(&a.txt&, mode)) == NULL)
printf(&文件打开失败&);
冒泡排序作为最简单的排序算法、两行for循环即可搞定。
步骤:一、从前到后依次比较相邻两个数大小,若是前面比后面大则将两个数交换位置,这样第一轮最大的一个数便会被交换到最后面。
&#160;&#160;&#160;&#160;&#160;&#160;...
数据结构——二叉树1(c++)
下表显示了基于数组和基于栈的编辑器实现的编辑器操作的计算复杂度。
哪个实现更好呢? 没有一些usage pattern的知识,就不可能回答这个问题。 然而,通过了解一些人们使用编辑器的方式,表明基于...
在大多数情况下,我们所写的程序都依赖抽象数据类型来表示复合对象。从实践的角度来看,这个策略是极其常见的。当你以C++等面向对象语言编写程序时,应该尽可能利用库提供的抽象类型的优势,并尽可能远离底层细节...
他的最新文章
讲师:刘文志
讲师:陈伟
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)实验二 实验报告表_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
实验二 实验报告表
阅读已结束,下载文档到电脑
想免费下载本文?
定制HR最喜欢的简历
你可能喜欢

我要回帖

更多关于 存储器的基本单位字节 的文章

 

随机推荐