zoukankan      html  css  js  c++  java
  • 《程序员的数学思维修炼》 读书笔记 Chapter 1 数据的表示

    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整数的计算、) 

    1)B进制转10进制

             n-1

    D= ∑  X[i]*B^i

             i=0

    2 ) 2进制与8/16进制互化

         3/4位<-->1位

  • 相关阅读:
    [js]vue-router的使用
    [js]递归实现 数组转树形
    [js]vue组件核心
    [js]了解chart绘图
    [js]vue权限控制
    [js]vue显示一个外部链接的组件
    [js]axios使用
    [js]vue中 给router-view 组件的 绑定 key 的原因
    [java]BeanPostProcessor使用及源码
    [java]权限管理
  • 原文地址:https://www.cnblogs.com/Catch-22/p/4251511.html
Copyright © 2011-2022 走看看