如何进行128进制数的乘法运算呢?

在一些密码学应用的运算中,需要进行二进制1024位的大数乘法运算,二进制1024位的大数用字节表示时需要128个字节,这相当于是一个128个码的256进制数。

而采用百家姓128进制表示时需要每7个字节扩展成8个字节,每个字节的值在0~127之间,所以需要147个字节才足够,这是一个147个码的128进制数。

又由于百家姓128进制的编码是双字节的,实际需要294个字节才能表示一个二进制1024位的大数。

百家姓128进制数的参与计算,首先要用它们的权重替换原来的汉字编码,权重的值在0~127之间。

两个大数的相乘,可以模拟竖式的计算方法,假设被乘数有M码,乘数有N码,则乘积最多有M+N+1个码。被乘数中的任意一码m(0<=m<M)和乘数中的任意一码n(0<=n<N)相乘的结果,累加在乘积的m+n+1的位置中。

因为百家姓128进制的最大权重是127,两个127相乘是16129,在每个乘积的位置,最多可能累加M或N次,所以乘积的每个码要用4个字节来保存,保证在几百个码长的运算中不溢出,整个运算需要进行M*N次码码相乘。

然后从个位开始,将每个大于或等于128的乘积结果减去128,并向上一位进一,循环判断直到每个码的值都小于128为止。

乘积中的每个码,其值都在0~127之间,再用百家姓替换回来,结果就是用百家姓128进制表示的乘积了。

以下是百家姓128进制乘法软件的使用:

1、梁梁梁梁梁梁梁梁梁梁梁梁梁梁梁梁 X 梁梁梁梁梁梁梁梁梁梁梁梁梁梁梁梁 = 梁

2、赵赵赵赵赵赵赵赵赵赵赵赵赵赵赵赵 X 赵赵赵赵赵赵赵赵赵赵赵赵赵赵赵赵 = 赵赵赵赵赵赵赵赵赵赵赵赵赵赵赵钱梁梁梁梁梁梁梁梁梁梁梁梁梁梁梁董

3、赵钱孙李周吴郑王冯陈褚卫蒋沈韩杨 X 计伏成戴谈宋茅庞熊纪舒屈项祝董梁  =

源代码已经上传,下载地址是:点击打开源代码下载的链接,供有兴趣的朋友参考。

百家姓128进制数的乘法运算相关推荐

  1. 百家姓128进制数的除法运算

    百家姓128进制数的除法运算 如何进行百家姓128进制数的除法运算呢?可以通过模仿除法的竖式算法来实现. 1.先将百家姓128进制的被除数和除数,用其权重替代中文码. 2.比较被除数和除数的大小,如果 ...

  2. 百家姓128进制的权重和编码

    当使用百家姓表达一个128进制的数据时,一个128进制的数字(值在0~127之间)需要用两个字节来表达,在128个百家姓中每个姓氏有GBK编码和UNI编码两种. 各姓氏的权重和编码如下: 权重     ...

  3. 用百家姓表达128进制的数据

    用百家姓的前128个姓氏,表示128进制的数据,让中国的老百姓在看大数据时更容易掌握,尤其适合在比特币的收款地址中使用更有价值. 百家姓的前128个姓氏是: 赵钱孙李周吴郑王 冯陈褚卫蒋沈韩杨 朱秦尤 ...

  4. P1066 2^k进制数 NOIP 2006 提高组 第四题

    洛谷蓝题(点击跳转) 提高组 第四题 题目描述 设r是个2^k 进制数,并满足以下条件: (1)r至少是个2位的2^k 进制数. (2)作为2^k 进制数,除最后一位外,r的每一位严格小于它右边相邻的 ...

  5. 各种进制数之间的转换

    计算机中各种进制数之间的转换 各种进制之间的转化都可以通过二进制为桥梁 二进制之间整数的转换 示例1:二进制数1100转化为各种进制数 1100转化成十进制数 ​ 1100 = 1*23+1*22+0 ...

  6. 对于十进制转化为任意进制数的简单算法分析

    对于十进制转化为任意进制数的简单算法分析 基本思路: 对于十进制转任意进制,通常都是通过取余逆序排列法获得结果,举个简单例子10进制数1024 转2进制: 1024/2=512 余->0 512 ...

  7. 16进制数的表示方法及转换

    十六进制数具有下列两个特点: 英文字母A,B,C,D,E,F分别表示数字10-15. 计数到F后,再增加1个,就进位. 十六进制数的基数是16,采用的数码是0.1.2.3.4.5.6.7.8.9.A. ...

  8. 4、计算机中的进制数转换(十进制、二进制、八进制、十六进制)

    目录 课前先导 一.计算机中的进制数 十进制(简写:D) 二进制(简写:B) 八进制(简写:Q) 十六进制(简写:H) 二.计算机进制数之间的转换 1.十进制转二进制 2.十进制转八进制 3.十进制转 ...

  9. 106划为c语言16进制数,计算机基础知识题(含答案)

    <计算机基础知识题(含答案)>由会员分享,可在线阅读,更多相关<计算机基础知识题(含答案)(27页珍藏版)>请在人人文库网上搜索. 1.第第1 1章章 计算机基础知识计算机基础 ...

最新文章

  1. 编译安装mysql5.6.16_CentOS 6.4下编译安装MySQL 5.6.16
  2. 求职:网站编辑或网页美工(北京)
  3. makefile例子
  4. Elasticsearch的Groovy Script自定义评分检索
  5. ccleaner无法更新_CCleaner正在静默更新关闭自动更新的用户
  6. 怎么看表_干货 | 剪力墙、柱、板配筋率到底怎么算?
  7. 201521123035《Java程序设计》第八周学习总结
  8. 计算机实训大纲,计算机专业实训大纲
  9. 【Hard 递归 动态规划 回文串15】LeetCode 730. Count Different Palindromic Subsequences
  10. ArrayList源码详解篇
  11. Caused by: java.lang.SecurityException: com.example.geofences from uid 10049 not allowed to perform
  12. 安装程序提示本地计算机已存在源,MSI文件安装错误码不再烦
  13. 在计算机excel上怎么求sin值,Excel中使用sin函数计算的操作技巧
  14. Unmapped Spring configuration files found. Please configure Spring facet or use ‘Create Default Con
  15. OpenCASCADE:Linux平台上构建OCCT使用的第三方库
  16. 打开计算机文件反应慢怎么解决方法,word文档打开速度慢的几个原因和有效解决方法...
  17. 如何在线打开Xmind文件 — 百度脑图在线工具
  18. win32 24内存管理和文件操作
  19. 自定义dns服务器faq,常见手机品牌的DNS修改方法
  20. 标称型和数值型(连续型)的区别

热门文章

  1. 尚硅谷Manen2022----①基础概念,基础使用
  2. GB2312简体中文转换为拼音的一种方法
  3. 知识产权及保护措施是受到法律保护的吗
  4. 【软件安装】linux下安装numeca
  5. mac系统修改文稿文件种类为 unix excutable
  6. 办公室与人相处之道你值得一看
  7. 精品微信小程序健康食谱菜谱系统+后台管理系统|前后分离VUE
  8. windows计算器_如何使用Windows 10计算器
  9. 用RTF格式解决DrawText函数或Graphics.DrawString方法不能设置行距的问题
  10. 520爱心表白——C语言入门