三个基本类型
int
float
char
总结
-
bit 二进制位
计算机用来存储数据最基本的单位是电子管 有两种状态开启和关闭 即 0 和 1 这两种可能
对应到计算机中的存储单位就是
bit
n
个bit
可以表示0 ~ 2^n - 1
这个区间的数二进制 十进制 0 0 1 1 10 2 11 3 100 4 101 5 110 6 111 7 -
Byte
在计算机中 8 个二进制位为一个字节 (B),最常用的单位。
所以可以得出 1 个
Byte
可以表示一个0 ~ 2^8 - 1
大小的数 -
进制
进制只是数字的一种表现形式
也就是说
10 进制 32
和2 进制的 100000
其实是一样的 只是展现方式的有所不同 -
int 与 char 的关系
在 C 语言中 int 与 char 是可以无缝转换的
-
string 类型的的本质是个数组
// 此时 a 是一个整形数字 即 int 类型 let a = 100 // 由于 int 和 char 是相同的那么我们可以找到 ASCII 码为 100 的 char 即 "d" let b = String.fromCharCode(a) // 然而把 a 从 int 转换成 string 得到 "100" 后其实得到的是一个装满 char 的一个数组 // 每一个 char 都可以找到它的 int 类型 let c = a.toString() // "100" c.charCodeAt(0) // 54 c.charCodeAt(1) // 52
-
同一个数由于进制不同而导致的显示方式不同并不影响他们相等
但是一个 int 类型的 100 和一个 string 类型的 "100" 是完全不同的
存储一个 int 的 100 用 1 Byte 又就可以了
存储一个 string 类型的 "100" 需要用 3 Byte (1 个 char 需要 1 Byte 大小的空间去存储)
补充知识
计算机存储单位的换算关系
计算机存储单位一般用 bit、B、KB、MB、GB、TB、PB、EB、ZB、YB、BB、NB、DB ……
来表示,它们之间的关系是:
位 bit (比特)(Binary Digits):存放一位二进制数,即 0 或 1,最小的存储单位。[英文缩写:b(固定小写)]
字节 byte:8 个二进制位为一个字节(B),最常用的单位。
1 Byte (B) = 8 bit
1 Kilo Byte (KB) = 1024 B
1 Mega Byte (MB) = 1024 KB
1 Giga Byte (GB) = 1024 MB
1 Tera Byte (TB) = 1024 GB
1 Peta Byte (PB) = 1024 TB
1 Exa Byte (EB) = 1024 PB
1 Zetta Byte (ZB) = 1024 EB
1 Yotta Byte (YB) = 1024 ZB
1 Bronto Byte (BB) = 1024 YB
1 Nona Byte (NB) = 1024 BB
1 Dogga Byte (DB) = 1024 NB
1 Corydon Byte (CB) = 1024 DB
JS 中整形转换成字节数组
const intToBytes = (value, len) => {
let int8Arr = new Array(len)
for (let i = 0; i < len; i++) {
int8Arr[i] = Math.floor(value / Math.pow(256, i)) & 0xff
}
return int8Arr
}
JS 中 10 进制转任意进制
const divideByDec = (decNumber, base) => {
let remArr = []
let rem = 0
while (decNumber > 0) {
rem = Math.floor(decNumber % base)
if (rem > 10) rem = String.fromCharCode(rem + 87)
remArr.push(rem)
decNumber = Math.floor(decNumber / base)
}
return remArr.reverse().join('')
}
// Math.floor() 方法返回小于等于x的最大整数。
// String.fromCharCode() 返回ASCII码对应的字符
Number.prototype.divideByDec = function (base) {
let decNumber = this
let remArr = []
let rem = 0
while (decNumber > 0) {
rem = Math.floor(decNumber % base)
if (rem > 10) rem = String.fromCharCode(rem + 87)
remArr.unshift(rem)
decNumber = Math.floor(decNumber / base)
}
return remArr.join('')
}