二进制
计算机为啥是二进制的
应对问题,我用知乎老哥的一句话,先问是不是,再问为什么 ,首先再人类的发展历程中,最先发明的类似计算机其实是十进制的,首先可以网上搜索 分析机
的百度百科,还有搜索计算机发明历程就知道,人类的计算机发明之路也是一步一个脚印的,首先发明加减计算机,然后乘除,然后分析仪然后通用计算机,到最后冯诺漫的现代计算机雏形,从计算机的发展历程就可以知道,二进制是因为在前辈们在创造计算机后发现二进制是最简单构造和最适合当时的电路硬件体系的,不是因为为啥用二进制,而是二进制才是最好的。所以用二进制
对于二进制的计算机中如何计算
就是因为用了二进制,所以计算机可以设计很多很简单的电路逻辑门,来表示 布尔表达式
, 逻辑框图
, 真值表
.
- 布尔表达式(变量和函数的值只有 0 或 1),用于表达电路的活动,一开一关
- 逻辑框图,电路的图形化表示,每种类型的门有自己专用的符号
- 真值表, 所有可能的输入,输出值的表
二进制中正负表示
类比 java 中的 byte, 0000 0000,一共 8 位,把第一位的 1 0 分别代表 +-,然后 0 代表正,1 代表负,对应 byte 最大能表示 127,因为 7 位的二进制最大是 111 1111, 最小是-128,为啥是 128 呢
十进制转二进制的方法
首先正整数的十进制转二进制不用说,一直除 2,那么负整数转二进制咋转,聪明的你可能会说,我将 - 号设置为 1 放在最前面的位上,然后将负整数取绝对值就是正整数再取二进制,是的这样想没问题,但是如何让计算机知道这样弄呢,科学家就弄了个算法,首先负整数取绝对值,换算成二进制,然后这个二进制取反,对应的最高位就是 1 了,也就是负数了,然后整个二进制加 1,这样最终的数就是个负数, 下面是详解
对应byte
1. 5的二进制是 0000 0101
2. -5的绝对值二进制是 0000 0101
3. 101 取反 = 1111 1010
4. 将取反的二进制加1 = 1111 1011
5. 我们将1111 1011和 0000 0101相加,得出 0 0000 0000 这个结果是啥
6. 0 0000 0000首先我们知道最前面0去除,就得出 0000 0000 这个数不用说,是十进制中的0,正好和-5+5 = 0 对应,这就是算法的厉害,利用取反+1的算法,这样+法就成为了-法,下面再试下-5+ 4 = -1
7. 4 = 0000 0100
8. 0000 0100 + 1111 1011 = 1111 1111 计算机中存储的数字-1
9. 转化为10进制 1111 1111 - 1 = 1111 1110 ,然后取反 0000 0001,这个数就是10,这里因为取反了,就代表取了绝对值,这里真实的数字就是-1了,但是计算机中存储的-1 就是1111 1111
11. byte的最小负整数就是 1000 0000, 最大整数是0111 1111
结论
- 为啥选择二进制
- 二进制的 byte 的正负计算就可以知道二进制的好处,直接用 + 法代表-法
- byte 的区间为啥是 [127 , -128 ], 根据 128 进行算法确认自然就得出结论(这就打破了你 1111 1111 是最小负数的概念了把)
参考内容
- https://baike.baidu.com/item/%E5%88%86%E6%9E%90%E6%9C%BA
- https://baike.baidu.com/item/%E6%9F%A5%E5%B0%94%E6%96%AF%C2%B7%E5%B7%B4%E8%B4%9D%E5%A5%87/5466849?fr=aladdin
- https://blog.csdn.net/ray_cube4869/article/details/78585541
- https://zhuanlan.zhihu.com/p/48333494
- https://blog.csdn.net/bingjie1217/article/details/15336145
- https://www.zhihu.com/question/35453934
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于