码迷,mamicode.com
首页 > 其他好文 > 详细

《程序员的数学思维修炼》 读书笔记 Chapter 1 数据的表示

时间:2015-01-26 22:41:35      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:

1.未赋值的变量--初始化的必要性、

无初始化时,视语言的不同可能有以下几种情况

1)赋值0

2)赋值空

3)不改变该内存块原值,即随此刻值。

4)编译失败

2.除数为0的判断防ERROR

3.大整数的解决方法

1)在Pascal中超过数据类型上限是会报错的、C等则可能出奇葩数据、实质上更增加了挑错难度。(C类该特性待验证)

2)此时就需要我们所称的 高精度 计算--模拟算法。

  通过String(AnsiString)或数组表示一个大整数

  根据人类计算思维编写计算逻辑

  加减乘代码(http://www.cnblogs.com/Catch-22/p/3376384.html

  1 Procedure Plus(a,b:AnsiSTring);
  2   Var
  3     Tt,i:longint;
  4   Begin
  5     if la>lb Then
  6       Begin
  7         For i:=1 to la-lb do
  8           b:=0+b;
  9         lb:=la;
 10       End
 11     Else
 12       Begin
 13         For i:=1 to lb-la do
 14           a:=0+a;
 15         la:=lb;
 16       End;
 17     For i:=1 to la do
 18       c[i]:=Ord(a[i])+Ord(b[i])-96;
 19     For i:=la Downto 1 do
 20       if (c[i]+DC)>=10 Then
 21         Begin
 22           Tt:=(c[i]+DC) Mod 10;
 23           DC:=(c[i]+DC) Div 10;
 24           c[i]:=Tt;
 25         End
 26       Else
 27         Begin
 28           c[i]:=c[i]+DC;
 29           DC:=0;
 30         End;
 31     c[0]:=-1;
 32     if DC>0 Then c[0]:=DC;
 33     For i:=0 to la do
 34       if c[i]<>-1 Then  Write(c[i]);
 35     Writeln;
 36   End;
 37 Procedure Minus(A,b:AnsiSTring);
 38   Var
 39     t:AnsiSTring;
 40     Tt,i:longint;
 41   Begin
 42     if la>=lb Then
 43       Begin
 44         For i:=1 to la-lb do
 45           b:=0+b;
 46         lb:=la;
 47       End
 48     Else
 49       Begin
 50         For i:=1 to lb-la do
 51           a:=0+a;
 52         la:=lb;
 53         Write(-);
 54         t:=a;
 55         a:=b;
 56         b:=t;
 57       End;
 58     For i:=1 to la do
 59       c[i]:=Ord(a[i])-Ord(b[i]);
 60     For i:=la Downto 1 do
 61       if (c[i])<0 Then
 62         Begin
 63           c[i]:=c[i]+10;
 64           c[i-1]:=c[i-1]-1;
 65         End;
 66     lb:=1;
 67     While (c[lb]=0) And (lb<la) do Inc(lb);
 68     For i:=lb to la do
 69       if c[i]<>-1 Then  Write(c[i]);
 70     Writeln;
 71   End;
 72 Procedure Multiply(a,b:AnsiString);
 73   Var
 74     Tt,xx,i,j:longint;
 75   Begin
 76     xx:=0; Tt:=Maxlongint;
 77     For i:=La Downto 1 do
 78       For j:=lb Downto 1 do
 79         Begin
 80           c[i+j-1]:=((Ord(a[i])-48)*(Ord(b[j])-48)+c[i+j-1]);
 81           Tt:=Min(Tt,i+j-1);
 82           xx:=Max(xx,i+j-1);
 83         End;
 84     While c[tt]=0 Do Inc(tt);
 85     DC:=0;
 86     For i:=xx Downto Tt Do
 87       Begin
 88         if c[i]+DC>=10 Then
 89           Begin
 90             lb:=c[i];
 91             c[i]:=(c[i]+DC) Mod 10;
 92             DC:=(lb+DC) Div 10;
 93           End
 94         Else                           
 95           Begin
 96             c[i]:=c[i]+Dc;
 97             DC:=0;
 98           End;
 99       End;
100     if DC>0 Then Write(DC);
101     For i:=Tt To xx do Write(c[i]); //Writeln;
102     if Tt>=xx Then Writeln(0) Else Writeln;//Thanks For Luogu.org s Data.
103   End;

  除法……等我清醒了再说吧

4.二进制的相对优越性

   据说前苏联曾试图玩三进制……显然……

  技术实现简单性

  运算规则简单性

  逻辑运算简单性

  转换进制简单性

  抗干扰可靠性强

5.二进制的运算规则

  Pre-N进制运算规则 逢N进一

  1) 加法 0+0=0 0+1=1 1+0=1 1+1=10 交换律、结合律成立

  2) 减法 0-0=0  1-1=0  1-0=1  0-1=1  

  3) 乘法 0X0=0 0X1=0  1X0=0 1X1=1  交换律、结合律、分配率成立

  4) 除法 0÷1=0 1÷1=1 0不能作除数无异议。

加法

减法=+(-)

乘法=+++++

除法=+(-)+(-)+(-)+(-)

所以、只需要加法器。

6.八卦与八进制--适用于12位和36位等3N位计算机系统。

  坤艮坎巽震离兑乾

  地山水风雷火泽天

   0 1 2 3 4 5 6 7

12进制、60进制等略

7.进制问题、进制转换(可参考 Richard Courant&Herbert Robbins&Ian Stewart 的《什么是数学》第一章 自然数 1.1整数的计算、) 

B进制转10进制

         n-1

D= ∑  X[i]*B^i

         i=0

 

 

《程序员的数学思维修炼》 读书笔记 Chapter 1 数据的表示

标签:

原文地址:http://www.cnblogs.com/Catch-22/p/4251511.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!