什么是二进制?
关键在于二,逢二进一。
十进制 2
二进制 10
二进制里面只有 0 1来表示
在计算机里面存储单位
- 1 bit 位
- 1 Byte = 8 bit 字节
- 1 KB = 1024B 千字节
- 1 MB = 1024 KB 兆字节
- 1 GB = 1024 MB 吉字节
- TB PB 等等
加减
在计算加减这一块,我们比较容易理解,如何计算机来进行加减呢?
比如:大家都知道1 + 1 = 2 ;1 - 1 = 0 或者 1 + (-1)= 0。
计算机里面都是 0 和 1 该怎么计算? 我们来看看
0001 1
+ 0001 + 1
0010 2
// 这个时候 + 这个符号我们知道是啥意思,但是计算机里面可没这东西呢,
// 以及如何在计算机里面表示 负数? 我们先用一个字节来代表一个数
0000 0001 // 这是正数 1 这个数也可以表示 有符号或者无符号
1000 0001 // 这是负数 1 叫 有符号的数
// 0 在符号里面表示是正数 1 表示是负数 仅对 有符号的数,无符号的数仅代表自身
// 记住一点,符号带来的变化,如何让计算机计算加减并且显示正确的数?
0000 0001
1000 0001
+ 1000 0010 // 正确答案应该是 0 才对,用二进制来表示 是 0000 0000 才对,
// 说明此路不同 但是也只能用二进制来进行计算。那该怎么办?
// 接下来 了解 原码 反码 补码这些概念
原码 反码 补码
例如 : 1 -1
原码: 0000 0001 1000 0001
反码: 0000 0001 1111 1110
补码: 0000 0001 1111 1111
可以看出正数1 没有什么变化,只有负数有变化
负数的反码是 除符号位其余取反(1 -> 0,0-> 1)
补码是 在反码的基础上 + 1
使用补码进行计算负数
0000 0001 // 已知原码 反码 补码相同
+ 1111 1111 // 原码 1000 0001 反码 1111 1110 补码 1111 1111
10000 0000 // 由于我们是用一个字节来计算的也就只有8位,计算后为9位。第一个会舍弃,也就是变成了 0
进制的转换
十进制 转 二、八、十六进制
// 10 的二进制表示为 1010
// 10 除 2 取余
10/2 5/2 2/2 1
0 1 0 1
// 转八 十六进制 同理
// 10 的八进制表示为 12
// 10 除 8 取余
10/8 2
1 2
// 10 的十六进制表示为 A
10/16
A(10)
二进制转换
// 1010 转 10进制
1 * 2^3 + 0 * 2^2 + 1 * 2^1 + 0 * 2^0
1 * 8 + 0 * 4 + 1 * 2 + 0 * 1
8 + 0 + 2 + 0
10
// 1010 转 八进制
1 010
12
// 1010 转 十六进制
1010
A
// 二进制转八和十六进制,跟二进制转10进制差不多,
// 转八进制时,按照3位一算,转十六进制时按照4位一算
逻辑
或 与 非
符号来表示 | & !
或:只有都为 0 则为 0 其他为 1
与:只有都为1 则为 1 其他为 0
非:取反操作