今天在类里面,我决定用二进制代码编写日期,但是当考虑如何编写“2015”时,我立即意识到它将是一个大数字:11111011111。我理解每个位是0或1可以占用的空间,而字节符合8位,但只有7位用于写数字(我不知道为什么),而二进制的2015需要7个以上的空格甚至8个,所以占用一个字节以上,那么计算机如何管理大于 255(ASCI 最大数字)的数字,例如在除法中,它们如何除 2 个字节,或者如何使 2 个字节变为 1?
也许我有一个错误的想法,所以我希望你们向社区解释一下这一点(告诉我,我不是唯一有这个疑问的人)。
最佳答案
它们将它们存储在多个字节中,通常是 4 个(32 位算术)或 8 个(64 位算术)。 float 稍微复杂一些,但基本上具有±x·2^y的形式。有时,人们编写自己的类,通过将更大的数字分解为硬件可以处理的 block 来处理它们。您可以像在小学中学到的那样对非常大的数字进行加法,但在基数 4,294,967,295 中:将每一列从右到左相加,如果结果太宽,则进位 1。
有时,数字可以是正数,也可以是负数,您需要使用一位。但有时,这些位仅代表正数。因此,您可以选择能够表示范围 [-128,127] 的字节或表示范围 [0,255] 的字节。
关于binary - 计算机如何看到 "big numbers"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32447823/