设为首页收藏本站

爱吱声

 找回密码
 注册
搜索
查看: 6152|回复: 27
打印 上一主题 下一主题

[科普知识] 清凉山和他的二-十进制BCD码

[复制链接]
  • TA的每日心情
    开心
    2024-7-10 00:43
  • 签到天数: 1707 天

    [LV.Master]无

    跳转到指定楼层
    #
     楼主| 发表于 2018-11-15 01:32:56 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
    本帖最后由 数值分析 于 2018-11-15 01:38 编辑 1 v* r/ \$ X" y" {9 N; T/ J

    ! H* U# q) Y0 P(这段是背景,暂时来不及写,待会儿再补上)
      D" J* N. a; Z, K4 c% T
    / M6 C( B$ V9 \5 h4 s1 s他这个就是所谓的“二-十进制编码”(Binary-Coded Decimal,BCD码)8 B3 x/ L7 [$ w* d) f

    % p' M* ]& C% H) j$ r5 S6 V  s) i说人话,就是直接用一位16进制数字表示一位十进制数字。( u* o+ H' Z; i( T0 \

    : Q, G1 x4 ^2 a' `" V比如77,如果直接换算成16进制应该是4D,但BCD码就用十六进制的77来表示。
    5 [; Y% u' K" U% B9 ^6 Z$ W% f9 p  U- }3 W
    那么,这种编码有什么好处?
    8 i; X$ w% e0 z7 b! q! c5 w2 N; A3 m& t: E. k# H" V( w0 u7 _
    % J5 m" p2 u5 p! ?. @& B/ l

    3 K9 L6 {" j. p1 v% h比方说吧 ,7在16进制里还是7,很好,很直观。你不需要计算器。# s( l8 `! O) C' t0 T+ v
    但是77在16进制里应该是4D,这就不好了,不直观,看到4D你得找个计算器,不然不知道这个数字是多少。& K# a; Q. h6 s4 _1 m1 n( O
    如果采用BCD码,77在16进制里还是77,多好,省一计算器。" ]7 S, y: w, H8 S" s

    * T$ g0 b) ?, T5 A0 X8 x大家知道,4位二进制数字对应1位16进制数字- a1 W6 n; ~, ~7 b; w+ C# V
    下面请大家代入自己是码农(意味着你一眼看到0111就知道是7,看到0100就知道是4,看到1101就知道是0xD),如果你dump出一段BCD编码的内存,里边是01110111,,你马上就知的这说的是77。如果你dump出一段普通普通整型编码的内存01001101,你一眼只知道这等于4D,还得找个计算器才知道这个数是77.
    - Y+ [$ x) j! o0 a+ c2 a* D" T- X; w- i, w* A' i+ l" S  a
    当年不少数字电路是这么设计的(比如电子表)。每4位二进制可以直接接一个数码管做显示,直接表示一位十进制。比如 0000 0001 0010 0011,每4位直接接一个数码管,直接显示为为01:23,不需要解码电路。现在连个手表都高分屏了,早就没有人用这个了吧。一些早期程序也是这么设计的,这样存档文件可以直接用每位数字加48转成ascii码字符直接写出来,读回去的时候每个ascii字符减48就行。不用格式化字符串。兼顾了执行效率与人机交互性。现在没人在乎这点效率,也都没人用了吧。
    * ]; ]. g1 R! h+ n
    : r' g7 V0 [" E: [8 L5 |6 x5 Q说完了BCD码,但事情到这里还没有完,因位实际上清凉山每天贴出的是一个乘法结果,其实BCD码的弱项就是计算,特别是乘法。
    ; m) n! p( i# m2 Y3 W* p/ ~( e* \9 m& J) k% r0 h
    (未完待续,下面打算谈BCD码的计算问题)

    评分

    参与人数 10爱元 +50 收起 理由
    jerf71 + 6
    Delrio + 2 涨姿势
    青青的蓝 + 4 不明觉厉
    石璧 + 4
    云淡风轻 + 8 伙呆了

    查看全部评分

  • TA的每日心情
    开心
    2019-5-3 12:57
  • 签到天数: 1085 天

    [LV.10]大乘

    26#
    发表于 2018-11-29 13:18:57 | 只看该作者
    夏翁 发表于 2018-11-29 11:35! h1 v  ^  L0 `) K5 a' [& ]
    bcd: binary-coded decimal
    / O1 _) F8 \; l0 W4 k, n9 p你要是用七段显示的数码,还得转换成能显示的编码,如 1:0000110   3:10011 ...
    2 ~1 _" Y, A/ w" k; F$ Z8 D
    七段显示的数码管编码就看你硬件怎么接线了,不一定的。不过BCD码转换起来也方便,用个表查一下就行了,如果是二进制码还得先算成十进制的然后还得查表。7 `* j' e2 p0 T: V! U' q  O
    当然直接显示16进或8进制的也行,显示方便但看的人就头大了。; D% e0 f3 ?/ S' |( E' B  h% S
    所以一般不用显示的数多数用二进制,算起来方便,需要显示的就用BCD码,显示方便。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-8-5 04:50
  • 签到天数: 2837 天

    [LV.Master]无

    25#
    发表于 2018-11-29 11:35:44 | 只看该作者
    njyd 发表于 2018-11-16 20:03, V5 p: l: V9 T( X. K+ g) z* W  [
    看看这熟悉的名词,俺怎么看不懂了?
    ; A# m8 q4 }5 H% Q扔了二十多年了。
    6 m8 u! X$ O7 X. s5 I1 N7 c# v: U这个BCD码好象在以前内存少用汇编并且需要数码显示 ...
    & \1 v9 L. {& Z( q6 G
    bcd: binary-coded decimal
    / U) G! {, q: E3 X你要是用七段显示的数码,还得转换成能显示的编码,如 1:0000110   3:1001111
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-4-29 10:01
  • 签到天数: 334 天

    [LV.8]合体

    24#
    发表于 2018-11-29 10:58:48 | 只看该作者
    Sputnik之后的美国有New Math:  r. u6 x3 l8 g* I
    https://en.wikipedia.org/wiki/NewMath
    1 T1 B1 b9 M( d" V( \* n' d$ f+ ^4 B9 k2 C7 u6 j, A
    它在小学教非十进制,集合。反应不好。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-4-29 10:01
  • 签到天数: 334 天

    [LV.8]合体

    23#
    发表于 2018-11-17 09:41:03 | 只看该作者
    数值分析 发表于 2018-11-16 23:44+ e8 H" z) Q% W* n. f
    嗯。。。这个。。。咱10进制不是更直观更好学么。。。当然学有余力的小朋友另当别论。 ...
    9 z4 Y. S* }( x' c+ b8 [5 E8 w
    触类旁通。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-7-10 00:43
  • 签到天数: 1707 天

    [LV.Master]无

    22#
     楼主| 发表于 2018-11-16 23:48:26 | 只看该作者
    njyd 发表于 2018-11-16 20:038 W4 V! F3 l& r! ~  M
    看看这熟悉的名词,俺怎么看不懂了?
    7 X! }; Q9 l; ]! i: z' X扔了二十多年了。
    : Y1 w6 e7 I4 p1 b8 O这个BCD码好象在以前内存少用汇编并且需要数码显示 ...

    3 Z# D3 Z& o+ ]1 |对对,大概就是这么回事儿。高级语言也有用的,早期程序如果要把数据写成文本格式文件(好读好改),又不想用复杂函数整数转文本,可以用这个法子。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-7-10 00:43
  • 签到天数: 1707 天

    [LV.Master]无

    21#
     楼主| 发表于 2018-11-16 23:44:06 | 只看该作者
    lorry 发表于 2018-11-16 21:12
    : e$ [$ S# L  h9 s庸这个或者二/八/十六进制教小朋友进位/借位加减法,好不好?

    8 L( f8 W( X/ z嗯。。。这个。。。咱10进制不是更直观更好学么。。。当然学有余力的小朋友另当别论。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-4-29 10:01
  • 签到天数: 334 天

    [LV.8]合体

    20#
    发表于 2018-11-16 21:12:22 | 只看该作者
    庸这个或者二/八/十六进制教小朋友进位/借位加减法,好不好?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-5-3 12:57
  • 签到天数: 1085 天

    [LV.10]大乘

    19#
    发表于 2018-11-16 20:03:36 | 只看该作者
    看看这熟悉的名词,俺怎么看不懂了?
    3 z. x; s) o' r扔了二十多年了。
    : m" D0 Q% E2 v- @$ d这个BCD码好象在以前内存少用汇编并且需要数码显示的单片机中用的多,计算麻烦点,但往数码管送时就不需要计算一下了,高级语言用不着。
    9 A/ l: I# w$ g
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-7-10 00:43
  • 签到天数: 1707 天

    [LV.Master]无

    18#
     楼主| 发表于 2018-11-16 01:45:34 | 只看该作者
    清凉山 发表于 2018-11-16 01:38& ~) l5 J' R4 n7 R
    你这么分析来分析去的,真要把文科生给绕晕了那只是个简写,又不是位值制表达,地位都是相等的。 ...

    & ~7 U& e0 }7 t" Q- c  M2 e其实我觉得BCD最适用的地方就是这种每位独立表示(没有进退位)的数字了。不过话说不是你最早做那个乘法,然后贴16进制结果的么?要没这个事儿,也不会有计算器那个日志,也就不会激发我写这个的欲望了。。。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    12 小时前
  • 签到天数: 2701 天

    [LV.Master]无

    17#
    发表于 2018-11-16 01:38:45 | 只看该作者
    数值分析 发表于 2018-11-16 01:32" a9 @" W" r6 F3 o* g
    这篇不谈计分方法,只谈16进制编码表示每位数。这个本来应该在第一段(背景)里写的,但是这段写起来没意 ...

    7 W& |/ X2 j% {' A你这么分析来分析去的,真要把文科生给绕晕了那只是个简写,又不是位值制表达,地位都是相等的。但加出总分来显小不好看不是?再说77是数吗,也能数值分析?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    12 小时前
  • 签到天数: 2701 天

    [LV.Master]无

    16#
    发表于 2018-11-16 01:35:15 | 只看该作者
    数值分析 发表于 2018-11-16 01:32
    / {3 X2 p  p- T, ?7 Y! Q# F这篇不谈计分方法,只谈16进制编码表示每位数。这个本来应该在第一段(背景)里写的,但是这段写起来没意 ...
    $ X$ V) S' E$ i
    继续继续,有稿费赚就好
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    12 小时前
  • 签到天数: 2701 天

    [LV.Master]无

    15#
    发表于 2018-11-16 01:34:03 | 只看该作者
    hotmen 发表于 2018-11-15 23:56* u3 T) Z) X5 i" }* Y/ Q7 z
    签到红包最大不是77吗?
    7 n4 @% i3 ]" {  A) ^: a
    真是财迷心窍了
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-7-10 00:43
  • 签到天数: 1707 天

    [LV.Master]无

    14#
     楼主| 发表于 2018-11-16 01:32:34 | 只看该作者
    清凉山 发表于 2018-11-15 23:18
    7 g$ q  B" d( [更正你一下:现在爱坛流行的这套简明签到记分是豆豆原创的.考虑到奖励最高为10,签到红包最大为15,我 ...

    9 k2 B* S% R3 O- U; x" ]! M, C1 x. S7 f& h
    这篇不谈计分方法,只谈16进制编码表示每位数。这个本来应该在第一段(背景)里写的,但是这段写起来没意思,所以到现在还没写呢。就跟写paper一样,每次literature review都是后找补的。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2020-8-27 18:47
  • 签到天数: 638 天

    [LV.9]渡劫

    13#
    发表于 2018-11-15 23:56:49 | 只看该作者
    清凉山 发表于 2018-11-15 23:18
    / F1 y! v# ]8 M2 `( R  N更正你一下:现在爱坛流行的这套简明签到记分是豆豆原创的.考虑到奖励最高为10,签到红包最大为15,我 ...

    ; v& z6 |3 h2 J4 X6 z$ F签到红包最大不是77吗?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2020-8-27 18:47
  • 签到天数: 638 天

    [LV.9]渡劫

    12#
    发表于 2018-11-15 23:56:03 | 只看该作者
    签到红包最大不是77吗?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    12 小时前
  • 签到天数: 2701 天

    [LV.Master]无

    11#
    发表于 2018-11-15 23:18:39 | 只看该作者
    更正你一下:现在爱坛流行的这套简明签到记分是豆豆原创的.考虑到奖励最高为10,签到红包最大为15,我建议用16进制表达每*位*数,并被采纳.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    13 小时前
  • 签到天数: 2901 天

    [LV.Master]无

    10#
    发表于 2018-11-15 22:31:20 | 只看该作者
    8421 vs 5421
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    前天 22:11
  • 签到天数: 3009 天

    [LV.Master]无

    9#
    发表于 2018-11-15 22:14:15 | 只看该作者
    想多了吧

    点评

    油墨: 5.0 给力: 5.0
    油墨: 5 给力: 5
    爱元是实实在在到手了  发表于 2018-11-15 22:56
    回复

    使用道具 举报

  • TA的每日心情
    难过
    2021-8-22 23:19
  • 签到天数: 2078 天

    [LV.Master]无

    8#
    发表于 2018-11-15 11:11:20 | 只看该作者
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2020-4-8 10:45
  • 签到天数: 227 天

    [LV.7]分神

    7#
    发表于 2018-11-15 10:04:07 | 只看该作者
    看来楼主也是同行吧。
    2 q1 c7 g7 b0 U2 }9 s, z9 \  u* N0 c1 ~6 @9 ?
    IBM的大机系统用的就是e-bcd-ic编码,这个是承继自bcd编码来的。最变态的是他的英文字母编码不是顺序分布的,中间有间隔。而且和一般开放系统使用的ASCII编码不同,需要转码。
    回复 支持 反对

    使用道具 举报

    手机版|小黑屋|Archiver|网站错误报告|爱吱声   

    GMT+8, 2024-9-23 14:14 , Processed in 0.048522 second(s), 23 queries , Gzip On.

    Powered by Discuz! X3.2

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表