当前位置:网站首页>负整数及浮点数的二进制表示
负整数及浮点数的二进制表示
2022-07-28 16:02:00 【竹林观月】
前言
对于该代码
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舍入以及向上或向下舍入等方法,在面对不同情况时,他们都可能是最接近真实值的舍入方式。
边栏推荐
- Tcp/ip related
- Design direction of daily development plan
- Ansa secondary development - apps and ansa plug-in management
- Nowcode- learn to delete duplicate elements in the linked list (detailed explanation)
- Oracle table partition
- IM即时通讯软件开发网络请求成功率的优化
- 微软100题-天天做-第11题
- Im im development optimization improves connection success rate, speed, etc
- Li Hongyi, machine learning 4. Deep learning
- 栈的介绍与实现(详解)
猜你喜欢

栈的介绍与实现(详解)

Outline and principle of structured design -- modularization

Nowcode- learn to delete duplicate elements in the linked list (detailed explanation)

LeetCode-学会复杂带随机指针链表的题(详解)

Kubeedge releases white paper on cloud native edge computing threat model and security protection technology

有趣的 Kotlin 0x07:Composition

MySQL5.7及SQLyogV12安装及使用破解及常用命令

Ruoyi's solution to error reporting after integrating flyway

Optimization of network request success rate in IM instant messaging software development

Ansa secondary development - Introduction to interface development tools
随机推荐
Efficiency comparison of three methods for obtaining timestamp
CRC16数据校验支持ModelBus和XMODEM校验模式(C语言)
FX3开发板 及 原理图
Learn ABAQUS script programming script in an hour
给定正整数N、M,均介于1~10 ^ 9之间,N <= M,找出两者之间(含N、M)的位数为偶数的数有多少个
Best Cow Fences 题解
阿里云-武林头条-建站小能手争霸赛
Record development issues
Redis source code optimization -- binding core
Sort 1-insert sort and Hill sort
【深度学习】:《PyTorch入门到项目实战》第五天:从0到1实现Softmax回归(含源码)
Fx3 development board and schematic diagram
Sort 5-count sort
leetcode9. 回文数
epoll水平出发何边沿触发
ABAQUS GUI interface solves the problem of Chinese garbled code (plug-in Chinese garbled code is also applicable)
排序5-计数排序
Interesting kotlin 0x07:composition
Text filtering skills
小程序:scroll-view默认滑倒最下面