大多数计算机使用 8 位的块,或者成为字节(byte),作为最小可寻址的内存单位,而不是访问内存中单独的位.计算机将内存视为一个非常大的字节数组,称之为虚拟地址空间(virtualmemory).内存中每一个字节都有一个唯一可访问的数字标识,称之为地址.实际上就是将动态随机访问存储器,(DRAM),闪存,磁盘存储器,特殊硬件和操作系统软件结合在一起,为程序提供一个看上去统一的字节数组.C 中的指针就是指向内存中某个存址,,虽然 C 维护这这类型信息,但是,他生成的机器级程序并不包含数据类型的信息,每个程序都可视为单个字节块,而程序就是一个字节序列.
它提供了引用数据结构的元素的机制,,与变量类似,指针不是变量,指针有两个方面,值和类型,它的值表示某个对象的位置,它的类型表示那个位置上存储对象的类型,比如整数和浮点数, 真正想理解指针,需要在机器及上的表现和实现.
10 进制和 2 进制交互困难, 事实上,一个字节由 8 位组成,,二进制中表示方法即是,0000000011111111,当然如果看成十进制 0 ~ 255,当然用 16 进制表示就简单了,00FF
序号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
二进制 | 0000 | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 | 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 |
十进制 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
十六进制 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
在 C 中,0x 开头的就是 16 进制数.FA1D37B 也写成 0XFA1D37B,事实上,2 进制,16 进制互转很简单.
& |
0 | 1 |
---|---|---|
0 | 0 | 0 |
1 | 0 | 1 |
| |
| 0 | 1 |
| :-: | :-: | :-: |
| 0 | 0 | 1 |
| 1 | 1 | 1 |
! /~ |
0 | 1 |
---|---|---|
1 | 0 |
^ |
0 | 1 |
---|---|---|
0 | 0 | 1 |
1 | 1 | 0 |
// 这个利用 | & 逻辑结合实现
const xor = (a, b)=> (a|b) & (!(a&b))
// 简单来说 就是 利用
0,1 & !(0,0) => 0,1
1,1 & !(0,1) => 1,0
布尔运算完全适应算数交换定律
a*(b+c) === a*b+a*c
=>a&(b|c) === a&b|a&c
,此处通用于任何一个布尔运算符号.
编码单位整数,有两种表示方式,整数和负数,