body, table{font-family: 微软雅黑}
table{border-collapse: collapse; border: solid gray; border-width: 2px 0 2px 0;}
th{border: 1px solid gray; padding: 4px; background-color: #DDD;}
td{border: 1px solid gray; padding: 4px;}
tr:nth-child(2n){background-color: #f8f8f8;}

FORTH 堆栈有两个字节  宽度16位   能表示的无符号数的范围是 0~65535 用符号 “u” 表示。
表示有符号数 -32678 ~ 32767 用字母“n”表示。这就是单字长数范围。

算术移位
2*  (n -- n*2) 算术左移  比 2 * 效率高
2/  (n -- n/2) 算术右移  比 2 / 效率高

ASCII 码表  
空格32        !33         $36         .46           /47         * 42          -45         :58     

双字长数
32位
FORTH 中“字”表示一个被定义的命令。一个16位的二进制数据称为一个“单词”(cell)。一个双字长数需要两个单字单元。
.   数据含有这个词,NUMBER 会把他作为一个信号识别;表示该数应该转换成双字长数,然后将该数压入堆栈中的两个连续的“单元”,高阶在栈顶,

FORTH 中 .   是把栈顶值作为带符号数显示 

数基
FORTH 系统中默认的是十进制,但是可以输入命令转换
HEX   OCTAL   DECIMAL  执行这些词会改变数基

数字格式化
<#     #>        指明数字转换过程的开始和结束。#S  表示把栈顶值转换成  ASCII 码字符。TYPE  在终端打印出表示该数的字符。HOLD 取出数字所表示的 ASCII 值。
:   .PH#      <#   #   #   #   #  45   HOLD   #S   #>   TYPE   SPACE   ;     
定义字符表示,把输入的数按照我们定义的格式输出,数字格式化定义所转换的数位次序与将要打印的数位次序相反,# # # # 表示的是输入数据的最后四位,不足就补 0 ;然后输出 ASCII 码代表的“-” #S 表示剩下的数据。知道有几位数据也可以用 # 来表示;
:   DATE      <#   #   #   47   HOLD   #   #   47   HOLD   #S   #>   TYPE   SPACE   ;         
 //这个是把 #S 改成 # # ;

//因为时间的分秒倒数第二位的最大值时5,倒数第一 ‘鹅鹅鹅鹅鹅鹅位的最大值是9;所以在定义中,:00 先把最后一位按十进制输出然后倒数第二位按六进制输出。4500.  十进制输出最右边一位值0,剩下450,转六进制是2030,输出一位0作为倒数第二位;剩下的203进行第二个 :00 操作,先转十进制75,输出一位5,剩下的7转六进制11,输出1。最终剩下一个1直接输出。
!  将16位的n存入地址addr。定义不要也可以

数字格式化——带符号数和单字长数
定义一个显示美元格式的词
:   .$   <#   #   #   46   HOLD   #S   36   HOLD   #>   TYPE   SPACE ;    
//如果要格式化表示单字长度的数据,但是<# #>只能表示双字节长度的数据,可以在<# 前面加上0,表示高阶为0 的双字数据。

双字长运算符
D 开头的字只能操作双字,但是以 2 开头的在既可以操作单字也可以操作双字 

混合字长运算符
M*    (n1  n2  --  d  )     混合量乘,乘积为双字长数。
M/MOD    (d  n  --  rem  quot)     混合量除,带余数。
UM*    (u1  u2  --  ud)     无符号混合乘。
UM/MOD    (ud1  u  --  rem  quot)     无符号混合除。
MU/MOD   (ud  u  --  ud  u)    
U<    (u1  u2  --  f)   留下两个16位数的无符号“小于”比较的布尔值。
U>    (u1  u2  --  f)   留下两个16位数的无符号“大于”比较的布尔值。

一些术语
直接量(Literal):FORTH 中指的是出现在定义内部的数。
掩码(Mask):一个能用来“叠加”在另一个值上,以掩蔽或揭示我们感兴趣的某些位的值。
数字格式化(Number formatting):通常按诸如 3/13/81 或 $47.93 这样一些特定格式打印一个数的过程。

//循环找到无符号数的最大值;从0开始循环,每次+1后和0比较大小,如果小于0就意味着已超出单字长的限制。结束循环,在-1就得到单子长的极限值。


..    连续两点,表示一个双字长0
*********
 //OVER 为 IF 提供了正被转换数值的低字长单元。这个单元只有当该数值完全转换完毕是才为0。

PC/FORTH 数字类型的更多相关文章

  1. Java里面,反射父类里面数字类型字段,怎么set值

    Java里面,反射父类里面数字类型字段,怎么set值,我的做法是这样: /** * TODO 直接设置对象属性值, 忽略private/protected 修饰符, 也不经过setter * @aut ...

  2. javascript类型系统——Number数字类型

    × 目录 [1]定义 [2]整数 [3]浮点数[4]科学记数[5]数值精度[6]数值范围[7]特殊数值[8]转成数值[9]实例方法 前面的话 javascript只有一个数字类型,它在内部被表示为64 ...

  3. asp检测数字类型函数

    '**************************************************'函数ID:0014[检测ID是否为数字类型]'函数名:JCID'作 用:检测ID是否为数字类型' ...

  4. Javascript如何判断一个变量是数字类型?

    isNaN()不能判断一个变量是否为数字类型,isNaN(123)值为false,isNaN('123')值也为false.isNaN() 的实际作用跟它的名字isNaN并不一致,isNaN(NaN) ...

  5. Swift数字类型之间的转换

    Swift数字类型之间的转换Swift是一种安全的语言,对于类型的检查非常严格,不同类型之间不能随便转换.一.整型之间的转换在C和Objective-C等其他语言中,整型之间有两种转换方法:从小范围数 ...

  6. Python的数字类型及其技巧

    Python中的数字类型 int float fractions.Fraction decimal.Decimal 数字的舍与入 int(f):舍去小数部分,只保留整数部分,所以int(-3.8)的结 ...

  7. 是否以某字符串结尾 是否以某字符串开始 是否是整数 裁减字符串空格 是否是浮点数 是否所有字符为数字类型 是否为空 是否是EMAIL 是否是电话号码 身份证号码验证-支持新的带x身份证 日期验证

    /* 1.是否以某字符串结尾 endsWith(theStr,endStr) @param theStr:要判断的字符串 @param endStr:以此字符串结尾 @return boolean; ...

  8. MySQL数字类型中的三种常用种类

    数字类型 MySQL数字类型按照我的分类方法分为三类:整数类.小数类和数字类. MySQL数字类型之一我所谓的“数字类” 就是指 DECIMAL 和 NUMERIC,它们是同一种类型.它严格的说不是一 ...

  9. Python新手学习基础之数据类型——数字类型

    创建一组数字 Python 的有以下几种内置数字类型: int,整型,比如:1.-2.598: float,浮点型,比如:0.0.-3.5.18.55: bool,布尔型,即True和False两个关 ...

随机推荐

  1. Python pymysql 增删改查封装

    关于pymysql 的增删改查,简单做个封装,方便后面使用直接拿来调用即可. 其中 增删改 的处理其实是一致的,本可以使用统一的方法,但是为了明显区分,这里分开来写了. 直接看代码就即可,如下: # ...

  2. 网格视图GridView的使用

    网格视图GridView的排列方式与矩阵类似,当屏幕上有很多元素(文字.图片或其他元素)需要按矩阵格式进行显示时,就可以使用GridView控件来实现. 本文将以一个具体的实例来说明如何使用GridV ...

  3. 关于Python中的ifelse、while和for循环的简单小结

    1.ifelse 1.1首先简单编辑一个关于ifelse的程序: _username = 'yanfeixu' _password = 'wuyifan' username = input(" ...

  4. c# 读取txt方法

    string strLine; try { FileStream aFile = new FileStream("Log.txt", FileMode.Open); StreamR ...

  5. [MySQL] 中 Schema和Database的区别

    在MySQL中,schema和database是同义词. CREATE SCHEMA和CREATE DATABASE是等效的. 但是其他的数据库产品(几乎所有数据库)有所不同.在oracle数据库产品 ...

  6. Backup and Recovery Types

    Physical(Raw) and Logical Backup: 1.Physical backups consist of raw copies of the directories and fi ...

  7. Confluence 6 教程:空间高手

    这个教程将会带你如何在 Confluence 中创建和自定义空间,同时也包括如何删除空间,如果需要的话.通过这个教程,你将成为使用空间的高手. 你需要具有创建空间(Create space)和创建个人 ...

  8. textarea点击蓝色背景,黄色条,input点击黄色条,如何去掉?

    textarea:focus{ background: #ffff outline:none; } input:focus{ oulilne:none; }

  9. 诡异的楼梯 HDU - 1180

    Hogwarts正式开学以后,Harry发现在Hogwarts里,某些楼梯并不是静止不动的,相反,他们每隔一分钟就变动一次方向. 比如下面的例子里,一开始楼梯在竖直方向,一分钟以后它移动到了水平方向, ...

  10. Luffy之虚拟环境.项目搭建,目录日志等配置信息

    1. 项目开发前 1.1 虚拟环境virtualenv 如果在一台电脑上, 想开发多个不同的项目, 需要用到同一个包的不同版本, 如果使用上面的命令, 在同一个目录下安装或者更新, 新版本会覆盖以前的 ...