原来计算机将0.1累加100次得不到10。万能的计算机在进行小数运算时也会出错。 在前面的学习中了解到计算机是用二进制表示的,而有一些十进制的小数无法转换成二进制数。例如0.1就无法用二进制数正确表示。因为无法正确表示的数值最后都变成了近似值计算机无法精确处理结果也就出错了。用浮点数来处理小数是计算 ...
分类:
其他好文 时间:
2019-01-28 00:57:46
阅读次数:
152
题目描述 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 1 public class Solution { 2 public int NumberOf1(int n) { 3 int count=0; 4 int i = 1; 5 while(i!=0){ 6 if((n&i)! ...
分类:
其他好文 时间:
2019-01-27 21:38:40
阅读次数:
139
第二章主要是讲解的二进制 首先展示了二进制向十进制的转换巩固了在课堂上的知识。此外还了解到。 IC的特性,导致了计算机的信息数据只能用二进制来处理。 移位运算中,左移产生的低位由零来补足。同时移位运算也可以通过数位移动来代替乘法运算和除法运算。 逻辑右移:当二进制表示图形模式而非数值时移位后需在最高 ...
分类:
其他好文 时间:
2019-01-27 19:25:10
阅读次数:
162
此章开头作者就举出了一个例子,一个将0.1累加100次的程序,如果不是作者强调,我也肯定会认为最后的运行结果是10,毕竟程序的写入没有什么错误。读了后面之后才意识到一些十进制的小数无法用二进制表示,导致运行结果与实际想要的结果有差错。同时作者补充了两种避免计算出错的方法。 本章还讲解了二进制小数如何 ...
分类:
其他好文 时间:
2019-01-27 19:17:38
阅读次数:
167
//总结自李煜东著《算法竞赛进阶指南》 问题:求a乘b对p取模的值,其中1<=a,b,p<=10^18。 简单的暴力相乘显然会溢出(相当于对64位整数最大值+1取模),对a进行b次累加显然会超时。 法一: 仿照快速幂,用二进制表示b。 法二: 利用a*b%p=a*b-floor(a*b/p)*p求解 ...
分类:
其他好文 时间:
2019-01-26 23:44:45
阅读次数:
258
第三章,讲的是二进制的小数运算机制,如何用二进制表示小数呢?通俗的说:一个小数乘以2结果小于1就为0基数不变,若大于1为1,基数=基数-1。 例:0.6,0.6*2=1.2>1 为1 基数=1.2-1=0.2,0.2*2=0.4<1 为0 基数=0,0.4*0.8<1 为0 基数=0,0.8*2=1 ...
分类:
其他好文 时间:
2019-01-26 11:05:38
阅读次数:
169
看完第二章后,我知道了计算机是以二进制来存储数据的(其实标题已经告诉我们了)。以至于计算机为什么用二进制来表示的,是因为计算机内部是由集成电路这种电子部件构成的,它们的所有引脚的每个引脚只有两种状态,就是0V和5V, 二进制数是只有0和1,它们之间的特性很相似。 还有字节(Byte)与位(bit)两 ...
分类:
其他好文 时间:
2019-01-25 18:45:31
阅读次数:
183
信息的表示和处理 计算机如何表示整数:有符号数和无符号数,尤其是如何用补码表示负数,数字的取值范围。 计算机如何表示浮点数,为什么小数的二进制表示法只能近似表示十进制小数。 数值的转换、移位 这几点非常重要,因为几乎所有的编程语言都有数据类型,而最基本数据类型必然包括整数和浮点数。 搞不清这些表示和 ...
分类:
其他好文 时间:
2019-01-25 11:44:18
阅读次数:
191
一、机器值和真值 1.机器值 一个数在计算机中的二进制表示形式, 叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1。 比如,十进制中的数 +3 ,计算机字长为8位,转换成二进制就是00000011。如果是 -3 ,就是 10000011 。 那么,这里的 ...
分类:
编程语言 时间:
2019-01-24 21:55:34
阅读次数:
174
一、题目描述 给定两个二进制字符串,返回他们的和(用二进制表示)。输入为非空字符串且只包含数字 1 和 0 示例 1: 输入: a = "11", b = "1" 输出: "100" 示例 2: 输入: a = "1010", b = "1011" 输出: "10101" 方法一:两个字符串变成整数 ...
分类:
其他好文 时间:
2019-01-24 13:10:51
阅读次数:
204