文章目录

  • 前言
  • 一、负整数的二进制表示
    • 1.原码
    • 2.反码
    • 3.补码
  • 二、浮点数的二进制表示
    • 1.公式:
    • 2.浮点数的分类(根据阶码分类)
      • 1:规格化的值
      • 2:非规格化的值
      • 3:特殊值
      • 3.浮点数的舍入

前言

对于该代码

public class hello {public static void main(String[] args) {int a = -17;System.out.println("二进制输出"+Integer.toBinaryString(a));int b = 17;System.out.println("二进制输出"+Integer.toBinaryString(b));}
}

输出的结果

故对负整数及浮点数的二进制表示好奇。

因在学习《深入理解计算机系统》这门课时,在第二章《信息的表达和处理》中又接触了相关知识,对浮点数在计算机中的表示,以及有符号和无符号整数的加法减法等知识有了新的认识。故在此进行补充。

一、负整数的二进制表示

1.原码

原码即该数的绝对值的二进制表示。在该代码中,-17的原码即为17的二进制10001,int类型的数据占用四个字节即32位,但省略前面的0。

2.反码

反码即把原码按位取反,如1变为0,0变为1。在该代码中,10001的反码为11111111111111111111111111101110。

3.补码

补码即将反码加一。在该代码中,11111111111111111111111111101110加1为11111111111111111111111111101111。即为负整数的二进制表达。

二、浮点数的二进制表示

1.公式:

根据国际标准IEEE 754,任意一个二进制浮点数V可以表示成下面的形式:
(1) (-1)^s表示符号位,当s=0,V为正数;当s=1,V为负数。
(2)尾数M表示有效数字,是一个二进制小数,它的范围是1~2-ε或者0 ~ 1-ε。
(3)2^E表示指数位,E为阶码。

例如:
将float=1.25f转化为二进制。
s=0;M=1.25;E=2;
对于float类型。首位为符号位,接下来的8位为阶码部分,余下的23位为尾数部分。
1.首先将该数化为二进制数。

第一步:
以小数点为界,分为整数和小数部分。
在该题中分为1和0.25两个部分。
第二步:
整数部分用除二取余法而小数部分用乘二取整法。
整数部分为1,小数部分为01。
第三步:
合并整数和小数部分。即1.01。

2.将二进制小数转为IEEE浮点数标准格式V

3.指数部分:实际指数值2加上一个(指数偏移值),对于32位单精度浮点数来说,偏移值为127,所以exponent值为127 + 2 = 129 ,二进制表示为10000001。

4.有效字位,又叫尾数,即2. 中二进制表示值的小数部分,即111101001,再补齐至23位,即得到fraction处位表示为:01000000000000000000000

5.结果0 10000001 01000000000000000000000。

2.浮点数的分类(根据阶码分类)

1:规格化的值

这是最普遍的,当exp的值不全为1或不全为0时皆为该情况。在这时,阶码字段被解释为以偏置形式表示的有符号整数,即E=e-Bias,e为无符号数,Bias=(2的k减一次方)减一。(k是阶码位,由该数的类型决定,若如float一样为单精度浮点型,则k的值为8;为双精度浮点型k的值则为16。M的值为1+f。

2:非规格化的值

当阶码域全为0时,为非规格化。阶码值E=1-Bias,尾数的值M=f,是小数字段的值,不包含隐含的1。

3:特殊值

当阶码全为1时,为该情况。
当小数域全为0时,得到的值为无穷,正负无穷取决于符号位s的值。
当小数域非零时,结果被称为“NAN”,即“Not a Number”。

3.浮点数的舍入

浮点数的舍入有向偶数舍入,向0舍入以及向上或向下舍入等方法,在面对不同情况时,他们都可能是最接近真实值的舍入方式。

负整数及浮点数的二进制表示相关推荐

  1. 浮点数的二进制表示学习笔记

    基础知识: 十进制转十六进制: 十六进制转二进制: IEEE制定的浮点数表示规则: 了解: 目前C/C++编译器标准都遵照IEEE制定的浮点数表示法来进行float,double运算.这种结构是一种科 ...

  2. 浮点数的二进制表示方法

    浮点数的二进制表示 Double型,64位 例一: 已知:double类型38414.4,求:其对应的二进制表示. 分析:double类型共计64位,折合8字节. 由最高到最低位分别是第63.62.6 ...

  3. 浮点数的二进制表示(IEEE 754标准)

    浮点数是我们在程序里常用的数据类型,它在内存中到底是怎么样的形式存在,是我了解之前是觉得好神奇,以此记录,作为学习笔记.现代计算机中,一般都以IEEE 754标准存储浮点数,这个标准的在内存中存储的形 ...

  4. 二进制浮点数以及二进制浮点数算术运算

    二进制浮点数以及二进制浮点数算术运算 二进制浮点数表示 半精度浮点数 单精度浮点数 双精度浮点数 特殊情况 浮点数的运算步骤 一.对阶 二.尾数运算 三.结果规格化 左规操作 右规操作 四. 舍入处理 ...

  5. JavaScript 浮点数与二进制之间的转换

    目录 二进制转浮点数 浮点数转二进制 二进制转浮点数 单精度 binary_to_float(data){let buf = new Uint8Array(data);buf.reverse();le ...

  6. C语言存储为2进制,浮点数的二进制存储形式及c语言验证

    我们经常听说浮点数,其实浮点数是和定点数对应的.定点数就是小数点固定的数,而且他的小数点在最右边,所以定点数用来表示整数. 浮点数表示方法允许小数点的浮动,一个浮点数分为三个部分:第一部分是符号,可以 ...

  7. java浮点数转二进制_浮点数转换成二进制

    因为要参加软考了(当然也只有考试有这种魅力),我得了概浮点数转化为二进制表示这个最难的知识点(个人认为最难).俺结合大量的从网上收集而来的资料现整理如下,希望对此知识点感兴趣的pfan有所帮助. 基础 ...

  8. 正则表达式(正整数+负整数+正负浮点数)

    目前测试能过滤: 以0开头后面不加点的数字,如:0123242 多个.的情况发生,如:10.10.10 "^(-?[1-9]+)|(-?[1-9]\d+\.\d+)|(-?[0-9]\.\d ...

  9. 32位浮点数转十进制与二进制

    32位浮点数的第一位为S(符号位),代表正负符号. 后面八位代表指数 最后使用23位来代表有效数 那么将浮点数转十进制数计算时可以采用以下公式来计算: s为0代表正数,s为1代表负数. e由浮点数转为 ...

最新文章

  1. mysql异步查询 java_java 手写并发框架(一)异步查询转同步的 7 种实现方式
  2. spring的各种注解的作用-持续更新中
  3. SAP Digital Asset Management by OpenText for CRM
  4. P3810 【模板】三维偏序(陌上花开)
  5. 前端基础6:背景常用属性和定位以及BFC
  6. 一条关于swap争用的报警邮件分析(一)
  7. 创建react项目并启动出现的报错及解决
  8. springMVC视图解析器的配置和使用
  9. 21最难调剂年:150万人参加调剂,预扩招18万人!
  10. Spring+Netty4实现的简单通信框架
  11. 私有云部署和本地化部署有什么区别?
  12. 使用postman发送post请求下载文件
  13. 【DZS-12CE/S DC220V型直流回路监视继电器】
  14. JavaScript 对象
  15. 百度地图语音导航开发
  16. 【毕业季】图匮于丰,防俭于逸;治不忘乱,安不忘危。
  17. Codeforces Round #363 (Div. 2) B. One Bomb(思维题目)
  18. 笔记本突然不能连接无线网解决办法
  19. 【坐标系统】高斯克吕格平面直角坐标系(笔记)
  20. 【昊泽爷爷】六一儿童节礼物——学做简单机器人的工作台

热门文章

  1. Oracle数据库,创建表并给表、字段添加注释
  2. 【模型开发】评分卡应用
  3. js禁止鼠标滑轮_js 禁止鼠标滑轮滚动的事件
  4. ubuntu壁纸目录
  5. 家用计算机ip地址为什么类型,计算机IP地址怎么分类
  6. 【内卷数据结构】顺序表超详细解析 | 从零开始步步解读 | 画图理解+调试分析 | 菜单制作
  7. 为指针分配和释放空间
  8. 3.4 数据预处理(一) - 数据集成(Data Integration)
  9. VUE使用docxtemplater导出word(带图片)
  10. 创建XTP图表的方法