CSD编码

有符号数(Signed Digit Number , SD)

  1. SD编码

1、有三重值 {0,1,-1}

2、应用在不用进位的加法器或乘法器中能够降低复杂性

因为通常可以通过非零元素的数来估计乘法的工作量,而应用SD表示法可以降低乘法的工作量。统计表明,数字的二进制补码中有一半数字是零,对于SD码,零元素的密度增加到三分之二

3、SD表示方法不是唯一的

举例如下:用SD表示十进制数15(15=1111 16=10000)

15=16-1  = 1000(-1)

15=16-2+1  = 100(-1)1

15=16-4+3  = 10(-1)11

但是只有最少非零元素的系统才叫CSD(正则有符号数字系统:Canonic Signed Digit ,CSD)

下附网上搜到的图片(修改了一下)

  2.最佳CSD编码

(1)从最低有效位开始,用10。。。0(-1)取代所有大于2的1序列,此外还需要用110(-1)取代1011

(2)从最高有效位开始,用011代替10(-1)

  3.分数CSD编码

如求7*X/8

看成7=8-1可以更高效的实现

 1 /*-----------------------------------------------------------------------
 2 Author                        :        WHaoL
 3 Technology blogs            :        http://www.cnblogs.com/WHaoL/
 4                                 :        http://blog.chinaaet.com/eWorld
 5 Email Address                :        [email protected]
 6 Filename                        :        CSD.v
 7 Data                            :        2016-08-04
 8 Description                    :
 9 modification history        :
10 Data            By            Version            Change Description
11 =========================================================================
12 16/11/5        WHaoL        1.0                Original
13 =======================================================================*/
14 `timescale 1ns/1ns
15 module CSD (
16 input            [4:0]        x,
17 output         [4:0]        y0,y1,y2,y3
18 );
19 assign y0 = 7*x/8;
20 assign y1 = x/8*7;
21 assign y2 = x/2+x/4+x/8;
22 assign y3 = x-x/8;
23
24 endmodule

时间: 2024-08-05 18:21:41

CSD编码的相关文章

分数CSD编码

有符号数系统:有三重值(1, 0, -1) SD编码:12 = 16 - 4 = 10000_0000 - 100 = 1_0000_0(-1)00; = 16 - 9 + 5 = 1_0000_0000 - 1001 + 101 = 1_0000_(-1)100; CSD:最少非零元素的系统. 如何得到CSD编码:从最低有效位开始,用100...(-1)代替大于等于2的1序列. 13 = 1101 = 111(-1)= 100(-1)(-1);即100(-1)(-1)为13 的CSD编码. 使

Ubuntu下C++使用icu库检测字符编码

Ubuntu下C++使用icu库检测字符编码.需先安装libicu-dev库: sudo apt install libicu-dev C++代码如下: //g++ -o x x.cpp -licuuc -licui18n #include <stdio.h> #include <string.h> #include <unicode/ucnv.h> #include <unicode/utypes.h> #include <unicode/ucsde

Python中编码的详细讲解

看这篇文章前,你应该已经知道了为什么有编码,以及编码的种类情况 ASCII 占1个字节,只支持英文 GB2312 占2个字节,支持6700+汉字 GBK GB2312的升级版,支持21000+汉字 Shift-JIS 日本字符 ks_c_5601-1987 韩国编码 TIS-620 泰国编码 由于每个国家都有自己的字符,所以其对应关系也涵盖了自己国家的字符,但是以上编码都存在局限性,即:仅涵盖本国字符,无其他国家字符的对应关系.应运而生出现了万国码,他涵盖了全球所有的文字和二进制的对应关系, U

java编码规范

右括号") "与其后面的关键字之间,关键字与其后面的左括号"("或"{"之间,以及"}"与"{"之间,要以一个空格隔开:除". "外,所有二元操作符的前.后要加空格:在逗号后边加一个空格. 说明: 一个紧跟着括号的关键词应该被空格分开: 空白应该位于参数列表中逗号的后面: 所有的二元运算符,除了".",应该使用空格将之与操作数分开.一元操作符和操作数之间不应该加空格,

微信实现定位城市并获取城市编码

最近在做一个项目是将用户的当前所在市县定位出来并展示在手机端页面,同时还要获取到该市县的城市编码从而进行数据过滤,这里重点讲定位城市及获取城市编码 前端页面代码: 首先引用腾讯地图的一个js <script type="text/javascript" src="https://3gimg.qq.com/lightmap/components/geolocation/geolocation.min.js" ></script> 同时在页面加载

python字符编码

1. 字符编码简介 阶段一:现代计算机起源于美国,最早诞生也是基于英文考虑的ASCII ASCII:一个Bytes代表一个字符(英文字符/键盘上的所有其他字符),1Bytes=8bit,8bit可以表示0-2**8-1种变化,即可以表示256个字符 ASCII最初只用了后七位,127个数字,已经完全能够代表键盘上所有的字符了(英文字符/键盘的所有其他字符) 后来为了将拉丁文也编码进了ASCII表,将最高位也占用了 阶段二:为了满足中文,中国人定制了GBK GBK:2Bytes代表一个字符 为了满

刨根究底字符编码之十二——UTF-8究竟是怎么编码的

UTF-8究竟是怎么编码的 1. UTF-8编码是Unicode字符集的一种编码方式(CEF),其特点是使用变长字节数(即变长码元序列.变宽码元序列)来编码.一般是1到4个字节,当然,也可以更长. 为什么要变长呢?这可以理解为按需分配,比如一个字节足以容纳所有的ASCII码字符,那何必补一堆0用更多的字节来存储呢? 实际上变长编码有其优势也有其劣势,优势是节省空间.自动纠错性能好.利于传输.扩展性强,劣势是不利于程序内部处理,比如正则表达式检索:而UTF-32这样等长码元序列(即等宽码元序列)的

Huffman树与编码

带权路径最小的二叉树称为最优二叉树或Huffman(哈夫曼树). Huffman树的构造 将节点的权值存入数组中,由数组开始构造Huffman树.初始化指针数组,指针指向含有权值的孤立节点. b = malloc(n*sizeof(BTreeNode)); for (i = 0; i < n; i++) { b[i] = malloc(sizeof(BTreeNode)); b[i]->data = a[i]; b[i]->left = NULL; b[i]->right = NU

转 常见视频编码方式以及封装格式

常见视频编码方式以及封装格式 常见视频编码方式 所谓视频编码方式就是指通过特定的压缩技术,将某个视频格式的文件转换成另一种视频格式文件的方式.视频流传输中最为重要的编解码标准有国际电联的H.261.H.263.H.264.H.265,运动静止图像专家组的M-JPEG和国际标准化组织运动图像专家组的MPEG系列标准,此外在互联网上被广泛应用的还有Real-Networks的RealVideo.微软公司的WMV以及Apple公司的QuickTime等. AVI AVI 是 Audio Video I