第一次写博客,没什么经验,会保持更新的,文章也会不断优化的,请你们多多指教函数
现代计算机存储和处理的信息以二值表示,也便是只包含0和一的二进制数字,其中整数表示的方法分为有符号整数、无符号整数。经常使用的数字表示方法有二进制、十进制、八进制、十六进制。下表为十六进制、十进制、和二进制的对应表示法。优化
十六进制 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
十进制 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
二进制 | 0000 | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 | 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 |
B2U() 为将二进制数转换为无符号数的函数
B2U[0001] = 0 * 2^3 + 0 * 2^2 + 0 * 2^1 + 1 * 2^0 = 1;
B2U[0101] = 0 * 2^3 + 1 * 2^2 + 0 * 2^1 + 1 * 2^0 = 5;
B2U[0001] = 0 * 2^3 + 0 * 2^2 + 0 * 2^1 + 1 * 2^0 = 1;
B2U[0001] = 0 * 2^3 + 0 * 2^2 + 0 * 2^1 + 1 * 2^0 = 1;编码
设计算机为w位(上为4位,如今计算机通常为64位),则能够表示最大无符号整数为:(2^w - 1),最小为:0;设计
B2T[0001] = 0 * 2^3 + 0 * 2^2 + 0 * 2^1 + 1 * 2^0 = 1;
B2T[0101] = 0 * 2^3 + 1 * 2^2 + 0 * 2^1 + 1 * 2^0 = 5;
B2T[1011] = -1 * 2^3 + 0 * 2^2 + 0 * 2^1 + 1 * 2^0 = -5;
B2T[1111] = -1 * 2^3 + 0 * 2^2 + 0 * 2^1 + 1 * 2^0 = -1;博客
设计算机为w位(上为4位,如今计算机通常为64位),则能够表示最大无符号整数为:(2^(w-1) - 1),最小为:(-2^(w-1));io
如下为我的理解,先举个例子:table
十进制表示 | 小数值 | 二进制表示 |
---|---|---|
1 | 1 | 000001 |
0.5 | 1/2 | 00000.1 |
0.25 | 1/4 | 0000.01 |
0.125 | 1/8 | 000.001 |
0.75 | 3/4 | 0000.11 |
1.5625 | 25/16 | 01.1001 |
∉εεεεεεεε
仔细看就会返现一个规律:
1的二进制表示为:000001,除以8,即2^3
3的二进制表示为:000011,除以4,即2^2
25的二进制表示为:011001,除以16,即2^4
没错,整数减小一倍,二进制中小数点右移一位,若是整数增长一倍,则二进制中小数左移一位class
目前全部的计算机都支持的表示浮点数的标准
V = (-1)^s * M * 2^E二进制
最多见的单精度浮点格式float32位:s 1位,exp k=8位,frac n = 23位。
双精度浮点格式double:s 1位, exp k = 11位,frac n = 52位。float