本内容为个人学习笔记,如有问题欢迎提出!
关于二进制
在我们日常生活中所使用的数学一般为十进制(满十则进一位),而计算机在处理数字时,会将其转换为二进制进行计算与处理。
- 十进制:当数值超过九时,就向前进一位。(数值包含 0 ~ 9)
- 二进制:当数值超过一时,就向前进一位。(数值只含 0, 1)
除了十进制与二进制,还有很多不同的进制,分别用于不同的领域。
进制转换
十进制转二进制
通过除二取余,逆序排序的方法完成(仅限整数)
目标数值:114
114 / 2 = 57 -- 0
57 / 2 = 28 -- 1
28 / 2 = 14 -- 0
14 / 2 = 7 -- 0
7 / 2 = 3 -- 1
3 / 2 = 1 -- 1
1 / 2 = 0 -- 1
结果数值:1110010 (逆序排序)
小数则使用顺序排序的方法完成(小数部分)
二进制转十进制
小数点前要从右到左用二进制的每个数去乘以二的相应次方并递增,小数点后则是从左往右乘以二的相应负次方并递减。
目标数值:1101.01
PS:^ 代表次方
1*2^0 + 0 * 2^1 + 1 * 2^2 + 1 * 2^3 + 0 * 2^-1 + 1 * 2^-2
1 + 0 + 4 + 8 + 0 + 0.25 = 13.25
结果数值:13.25
原码、反码、补码
原码表示法
原码是一种简单的机器码表示法,它的第一位代表了值的正负信息。
第一位值:0为正数,1为负数。
PS: [x] 表示原码
x = 1110010 [x] = 01110010
x = -1110010 [x] = 11110010
原码即在第一位加上正负信息。
反码表示法
正数的反码即为它本身(加正负信息),负数则将值求反(0 转 1,1 转 0)
PS: [x] 表示反码
x = 1110010 [x] = 01110010
x = -1110010 [x] = 10001101
正数同原码,负数则取反。
补码表示法
正数的补码即为它本身(加正负信息),负数在取反的同时会在最低位加 1
PS: [x] 表示补码
x = 1110010 [x] = 01110010
x = -1110010 [x] = 10001110
可以理解为反码后最低位加 1 (仅负数)
alert("a");
???