企业网站建设情况汇报,旅游网站建设与设计,南昌创建网站,dede网站地图模版十进制
十进制的位权为 10#xff0c;比如十进制的 123#xff0c;123 1 * 10 ^ 2 2 * 10 ^ 1 3 * 10 ^ 0。
二进制
二进制的位权为 2#xff0c;比如十进制的 4#xff0c;二进制为 100#xff0c;4 1 * 2 ^ 2 0 * 2 ^ 1 0 *2 ^ 0。
Java7 之前#xff0c;不支…十进制
十进制的位权为 10比如十进制的 123123 1 * 10 ^ 2 2 * 10 ^ 1 3 * 10 ^ 0。
二进制
二进制的位权为 2比如十进制的 4二进制为 1004 1 * 2 ^ 2 0 * 2 ^ 1 0 *2 ^ 0。
Java7 之前不支持直接写二进制值Java7 开始支持。
int a 0b11001;十六进制
十六进制的位权为 161 个 十六进制位可以理解为 4 个二进制位比如十进制的 123十六进制为 0x7B123 7 * 16 ^ 1 11 * 16 ^ 0。
Java 中可以直接使用十六进制进行赋值。
int a 0x7B十进制转二进制
整数部分除 2 取余直到商等于 0 为止再逆序排列。 小数部分乘 2 取整直到积的小数部分等于 0 或者达到要求的精度顺序排列。 最后将整数部分和小数部分合并即可。
/*比如 0.25 二进制为 0.01整数部分
0 % 2 0 取余 0小于 1终止逆序得 0小数部分
0.25 * 2 0.50 取整 0
0.50 * 2 1.0 取整 1小数部分为 0终止顺序得 01合并
0.01*/二进制转十进制
使用按权相加法。
/*比如 2.25二进制为 10.012.25 1 * 2 ^ 1 0 * 2 ^ 0 0 * 2 ^ -1 1 * 2 ^ -2*/
bit 位
bit 位计算机中表示数据的最小单位可取 0 或 1电路的开关。
整数的二进制表示
任何存储于计算机中的数据其本质都是以二进制码存储这是由计算机硬件决定的。
根据冯·诺依曼提出的经典计算机体系结构框架一台计算机由运算器、控制器、存储器、输入和输出设备组成。
运算器只有加法运算器没有减法运算器据说一开始是有的后来由于减法运算器硬件开销太大废弃了所以计算机没办法直接做减法它是通过加法间接实现的。现实中的减法也可以当成加法运算减去一个数可以看作加上这个数的相反数。
为了表示负数计算机引入了符号位一般最高位左边第一位表示符号位符号位为 0 表示正数为 1 表示负数。
从硬件的角度看只有正数加负数才算减法正数与正数相加负数与负数相加都可以通过加法器直接相加。
原码
原码用第一位表示符号其余位表示值。
byte beVar1 1; // 原码0000 0001
byte beVar2 -1; // 原码1000 0001反码
正数的反码等于原码负数的反码是原码的符号位不变其余位取反也可以理解为它的正数原码按位取反。
byte beVar1 1; // 反码0000 0001
byte beVar2 -1; // 反码1111 1110补码
补码_百度百科 (baidu.com)
正数的补码等于原码负数的补码是在反码的基础上加 1补码取反码再加 1 又得到原码。
byte beVar1 1; // 补码0000 0001
byte beVar2 -1; // 补码1111 1111理解补码
8 bit 位为例取值范围为 0000 0000 ~ 1111 11111111 1111 加 1 后变成 1 0000 0000由于只有 8 位溢出的 1 要舍弃只能保留 0000 0000。
即 1111 1111 加 0000 0001 变成了 0000 0000也就是说1111 1111 等同 -1同理可得 1111 1110 等同 -2…… 1000 0000 等同 -128。
补码的思想类似时钟如下图为了类比将 12 点改成了零点 值在 0 ~ 11 之间10 点等同 -2 点。 类似这样有计数范围的系统都存在一个“模”如时钟的计量范围是 0~11模12。“模”实质上是计量器产生“溢出”的量它的值在计量器上表示不出来计量器上只能表示出模的余数。任何有模的计量器均可化减法为加法运算。
小数的二进制表示
二进制中为表示小数采用类似十进制的科学计数法几乎所有的硬件和编程语言表示小数的二进制格式都是使用 IEEE 754 标准。 小数 [符号位] [指数部分] . [小数部分] 32 位单精度二进制 [1 个符号位] [8 个阶码位] [23 个尾数位] 64 位双精度二进制 [1 个符号位] [11 个阶码位] [52 个尾数位] 8 位阶码位移码偏移量 12711 位阶码位移码偏移量 1023 /*如2.25二进制 10.01先化为科学计数法 1.001 * 2 ^ 11.001 * 2 ^ 1的 32 位单精度表示符号位 0阶码位阶码 指数 阶码位移码偏移量 1 127 128二进制 1000 0000尾数位尾数 取小数点后 23 位001 0000 0000 0000 0000 0000最终得[0][1000 0000][001 0000 0000 0000 0000 0000]同理可得 -2.25 的二进制[1][1000 0000][001 0000 0000 0000 0000 0000]*/public static void main(String[] args) {System.out.println(Integer.toBinaryString(Float.floatToIntBits(2.25F)));System.out.println(Integer.toBinaryString(Float.floatToIntBits(-2.25F)));
}