javascript 进制转换方法
区别 toString 和 parseInt
在javascript中使用 Number的 toString 方法把 相应的数值 转换为 特定radix ( 默认值 10) 的进制。【注意返回的是字符串】
numObj.toString([radix])
而 parseInt(string, radix) 则是以 radix( 默认值 10) 的进制 解析 string,并返回 十进制的数值。
如果省略参数radix或其值为 0,则数字将以 10 为基础来解析。 如果它以 “0x” 或 “0X” 开头,将以 16 为基数。 如果该参数小于 2 或者大于 36,则 parseInt() 将返回 NaN。
以上 radix 的值范围是: 2~36。若不在此区间,那么 以上俩个方法都会抛出异常。
负数的原码、反码、补码
正整数是不变的(原码、反码、补码相等)。根据运算法则减去一个正数等于加上一个负数, 即: 1-1 = 1 + (-1) = 0 , 所以机器可以只有加法而没有减法, 这样计算机运算的设计就更简单了.
原码
原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值. 比如如果是8位二进制:
[+1]原 = 0000 0001
[-1]原 = 1000 0001
第一位是符号位. 因为第一位是符号位, 所以8位二进制数的取值范围就是:
[1111 1111 , 0111 1111]
即
[-127 , 127]
反码
对原码取反 ,等到反码。反码只是作为中间数,为求得补码。(反码就是将除符号位外取反)
[+1] = [00000001]原 = [00000001]反
[-1] = [10000001]原 = [11111110]反
补码
对反码加 1。
[+1] = [00000001]原 = [00000001]反 = [00000001]补
[-1] = [10000001]原 = [11111110]反 = [11111111]补
计算机存储的是补码,这是非常有利的,所以机器可以只有加法而没有减法。例如 十进制 8-3 =5;在计算机是这样的,8+(-5): 十进制8的二进制为: 0000 1000,整数的补码也一样;而-5的补码为: 1111 1011;两个补码相加得到: 0000 0011 即为 3.
字节(byte)、字(word)、双字(dword)、四字(qword)
8个位(bit)称为一个字节(byte),两个字节称为一个字(Word),两个字称为一个双字(dword),两个双字称为一个四字(qword)
- 一个字节 有八位二进制: 1 byte = 8 bit
- 一个字 有两个字节: 1 word = 2 byte
- 一个双字 有两个字: 1 dword = 2 word
- 一个四字 有两个双字: 1 qword = 2 dword