这里实现最原始的阵列乘法,逐位相乘然后加到一起.   参考链接 https://github.com/wjcdx/jchdl/blob/edcc3e098d4f1cb21677e86e87a1147db31ed2a9/src/org/jchdl/model/gsl/operator/arithmetic/Mul.java     1.创建Mul.java, 并生成构造方法和logic()方法 略   2. 根据逻辑原理图,添加输入输出线 ​​   3. 在构造方法中搜集输入输出线并调用con…
https://mp.weixin.qq.com/s/10fgjqPt2pRvIJzjDGYgBg   概念辨析   <IC-二进制, 自然数, 有符号数>:https://mp.weixin.qq.com/s/9rGs9yN-OvLvEclnDZr87Q   两个结论: 1. 如果不把符号位编码编进二进制数里面,那么符号位就要单独考虑.保证被减数一定要大于减数,不然减出来的差(负数)无法表示.比如:在小学一二年级的时候,做减法必须保证被减数大于减数,如果反过来不够减,学生就不知道该怎么表示了…
  这里的实现,先把符号位取出来,使用两个正数相乘,然后在把符号加到乘积上.   参考链接 https://github.com/wjcdx/jchdl/blob/master/src/org/jchdl/model/gsl/operator/arithmetic/MulC2.java     1.创建MulC2.java, 并生成构造方法和logic()方法 略   2. 根据逻辑原理图,添加输入输出线 ​​   3. 在构造方法中搜集输入输出线并调用construct()方法 ​​   4.…
https://mp.weixin.qq.com/s/6xcYYdYZTBPTf25xFluzBQ   使用FullAdder级联实现加法器   参考链接: https://github.com/wjcdx/jchdl/blob/master/src/org/jchdl/model/gsl/operator/arithmetic/Add.java     1.创建Add.java, 并生成构造方法和logic()方法 略   2. 根据逻辑原理图,添加输入输出线 ​​     3. 在构造方法中…
https://mp.weixin.qq.com/s/7N3avTxTd2ZUnAcKg4w3Ig   D触发器对边沿敏感,只有当相应的边沿出现时,才会触发D的值传播到输出Q.   ​​ 引自:https://www.cnblogs.com/IClearner/p/6443539.html   参考链接 https://github.com/wjcdx/jchdl/blob/master/src/org/jchdl/model/gsl/sequential/ff/DFlipFlop.java  …
因为对除法研究不深,这里略去不表.   有兴趣可以参考链接: https://github.com/wjcdx/jchdl/blob/master/src/org/jchdl/model/gsl/operator/arithmetic/Div.java  …
https://mp.weixin.qq.com/s/WNm4bLWzZ0oWHWa7HQ6Y6w   逻辑左移,继承自Shifter类.只需要实现shift方法即可.   参考链接 https://github.com/wjcdx/jchdl/blob/edcc3e098d4f1cb21677e86e87a1147db31ed2a9/src/org/jchdl/model/gsl/operator/shift/LogicalLeft.java     1.创建LogicalLeft.java,…
https://mp.weixin.qq.com/s/ngQji-xi4FCCbL_2ihUi_A   Shifter是移位节点的父类,定义了输入输出线,但是没有定义具体的移位方式,这个留给子类去实现.   参考链接 https://github.com/wjcdx/jchdl/blob/edcc3e098d4f1cb21677e86e87a1147db31ed2a9/src/org/jchdl/model/gsl/operator/shift/Shifter.java     1.创建Shif…
https://mp.weixin.qq.com/s/oJY6Xj9_oM1gSmvH_dHkJg   Concat节点把多根输入线线组合成一排线输出.   参考链接 https://github.com/wjcdx/jchdl/blob/master/src/org/jchdl/model/gsl/operator/concat/Concat.java     1.创建Concat.java, 并生成构造方法和logic()方法 略   2. 根据逻辑原理图,添加输入输出线 ​​   3. 在…
https://mp.weixin.qq.com/s/MtHR3iolPd5VQq6AUE-JPg   Assign是一个节点,把输入线直接赋值给输出线.在转换成Verilog时,这种类型的节点会直接单独处理.   参考链接 https://github.com/wjcdx/jchdl/blob/master/src/org/jchdl/model/gsl/assign/Assign.java     1.创建Assign.java, 并生成构造方法和logic()方法 略   2. 根据逻辑原…
https://mp.weixin.qq.com/s/Gh2xJJvfg1SlyuayK4LRyQ   二的补码指对二进制数的所有位数整体求补.二进制运算下0,1互为补数,n位二进制数a的补数为2^n - a   The two's complement of an N-bit number is defined as its complement with respect to 2N. For instance, for the three-bit number 010, the two's…
https://mp.weixin.qq.com/s/zZTnDdbCUCRGGpgpfAZsYQ   一的补码指对二进制数的每一位分别求补(二进制运算下0,1互为补数),实际运算即为对每一位取反.最高位为符号位.n位二进制数a的一的补数为2^n - 1 - a.   The ones' complement of a binary number is defined as the value obtained by inverting all the bits in the binary re…
https://mp.weixin.qq.com/s/GrYJ4KXEFRoLLmLnAGoMSA 原理图 ​​ 参考链接 https://github.com/wjcdx/jchdl/blob/master/src/org/jchdl/model/gsl/example/Mux4.java 1.创建Mux4.java, 并生成构造方法和logic()方法 ​​ 2. 根据逻辑原理图,添加输入输出线 ​​ 3. 在构造方法中搜集输入输出线并调用construct()方法 ​​ 4. 在logic…
https://mp.weixin.qq.com/s/yJx_dV6ScUStJtPWVuD38w 原理图 ​​ 参考链接 https://github.com/wjcdx/jchdl/blob/master/src/org/jchdl/model/gsl/example/Mux4.java 1.创建Mux4.java, 并生成构造方法和logic()方法 ​​ 2. 根据逻辑原理图,添加输入输出线 ​​ 需要注意的是,这里使用了WireVec,而不是Wire来声明输入线,以便统一处理一排线.…
https://mp.weixin.qq.com/s/hh0eExVFC6cxzpvNI1cA9A 使用门实现四选一选择器. 原理图 ​​ 参考链接 https://github.com/wjcdx/jchdl/blob/master/src/org/jchdl/model/gsl/example/Mux4to1.java 1.创建Mux4.java, 并生成构造方法和logic()方法 ​​ 2. 根据逻辑原理图,添加输入输出线 ​​ 3. 在构造方法中搜集输入输出线并调用construct(…
https://mp.weixin.qq.com/s/5mcYAllizuxyr3QSNrotrw 全加器是能够计算低位进位的二进制加法电路.与半加器相比,全加器不只考虑本位计算结果是否有进位,也考虑上一位对本位的进位,可以把多个一位全加器级联后做成多位全加器. 参考链接 https://github.com/wjcdx/jchdl/blob/master/src/org/jchdl/model/gsl/operator/arithmetic/FullAdder.java 1. 填充构造方法,添…
https://mp.weixin.qq.com/s/Y97bIro7UlPPFCoPlzgmOQ 半加器电路是指对两个输入相加,输出一个结果位和,没有进位输入的电路. 是实现两个一位二进制数的加法运算电路. 逻辑图 ​​ 真值表 ​​ 参考链接 https://github.com/wjcdx/jchdl/blob/master/src/org/jchdl/model/gsl/operator/arithmetic/HalfAdder.java 1.创建HalfAdder.java,并生成构造…
https://mp.weixin.qq.com/s/BjQtQE8DfaKP1XwcTiCwVg   ​​ 摘自康华光<电子技术基础 · 数字部分>(第五版)   参考链接 https://github.com/wjcdx/jchdl/blob/master/src/org/jchdl/model/gsl/sequential/Counter.java   1.创建Counter.java, 并生成构造方法和logic()方法 略   2. 根据逻辑原理图,添加输入输出线 ​​   3. 在…
https://mp.weixin.qq.com/s/uD5JVlAjTHQus2pnzPrdLg   多个D触发器可以组成一组寄存器. ​​ 摘自康华光<电子技术基础 · 数字部分>(第五版)   参考链接 https://github.com/wjcdx/jchdl/blob/master/src/org/jchdl/model/gsl/sequential/Register.java   1.创建Register.java, 并生成构造方法和logic()方法 略   2. 根据逻辑原理…
https://mp.weixin.qq.com/s/c8kDgye50nKJR4tkC0RzVA D锁存器对电平敏感,当使能位使能时,输出Q跟随输入D的变化而变化.   ​​ 摘自康华光<电子技术基础 · 数字部分>(第五版)   参考链接 https://github.com/wjcdx/jchdl/blob/master/src/org/jchdl/model/gsl/sequential/latch/DLatch.java   1.创建DLatch.java, 并生成构造方法和logi…
https://mp.weixin.qq.com/s/CtT08xZON0YxnheqDM2FAw 全加器是能够计算低位进位的二进制加法电路.与半加器相比,全加器不只考虑本位计算结果是否有进位,也考虑上一位对本位的进位,可以把多个一位全加器级联后做成多位全加器. 逻辑图 ​​ 真值表 ​​ 参考链接 无 1.创建FullAdder.java, 并生成构造方法和logic()方法 ​​ 2. 根据逻辑原理图,添加输入输出线 ​​ 3. 在构造方法中搜集输入输出线并调用construct()方法 ​…
计算机中储存和处理的信息是以二进制信号表示的.单个的位不是是很实用,而将这些位 组合在一起,加上某种解释,即给不同的可能位模式赋予含义,我们就行表示怎样有限集合的元素,即实现各种数据结构.计算机中使用8位的块称之为字节作为最小的可寻址的存储器单位,机器级程序将存储器视为一个很大的字节数组,称为虚拟存储器.存储器的每一个字节都有一个唯一的数字来标识,称为地址,全部可能地址的集合称为虚拟地址空间. c语言中的指针,指针的值为某个存储块的第一个字节的虚拟地址.C编译器将每一个指针和类型信息结合起来,依…
一.无符号数与有符号数 1.计算机中的符号位 数据类型的最高位用于标识数据的符号 -最高位为1,表明这个数为负数 -最高位为0,表明这个数为正数 #include <stdio.h> int main() { ; ; ; printf( )); printf( )); printf( )); ; } 2.有符号数的表示法 在计算机内部用补码表示有符号数 -正数的补码为正数本身 -负数的补码为负数的绝对值各位取反加一 3.无符号数的表示法 在计算机内部用原码表示无符号数 -无符号数默认为正数 -…
最近再次复习C++语言,用的教材是<C++ Primer>这本教材, 看到第二章的时候,里面有个问题困扰了我. 于是想上网查查怎么回事, 结果看了很久都没有得到一个满意的答案. 书上有这么一段话:当将一个超出数据类型取值范围的值赋值给这个类型的一个变量时,变量的值的结果由变量的 类型决定. 后面还有这么一段解释: 1.当接受值的变量类型为无符号类型时,  变量的值 =  超出变量范围的值 % 类型可以表示的数值的个数. Exp: unsigned char nTest; nTest = ; 那…
1.有符号数和无符号数 有符号数就是最高位为符号位,0代表正数,1代表负数 无符号数最高位不是符号位,而就是数的一部分而已. 1011 1111 0000 1111 1111 0000 1011 1010,如果当有符号数看待,那么他是一个负数的补码,如果当一个无符号数看待,他就是一个正数的原码 无符号数最小为0,不可能是负数 定义一个无符号的int unsigned int a; //使用unsigned int 定义了一个无符号的int变量,名字叫a short,long,long long,…
原创文章,欢迎阅读,禁止转载. 在我的程序中有如下代码编译被警告了 if(list.size()>msize){...} warning C4018: '<' : signed/unsigned mismatch warning C4018: "<": 有符号/无符号不匹配 这样的比较是不是真可能出问题呢?看个例子 int main() { unsigned ; ; cout<<(a>b)<<endl; //应该是1,实际是0,有bug…
在FPGA 设计过程中经常会遇到关于数表示之间的转化问题,最常见的是无符号数和有符号数之间的转化问题.(1)在FPGA设计过程中,能够很直接的看出数字的位宽,但经常以无符号数的形式输出,在后继的处理中往往要将之转化为有符号数(如:计算频谱):对于一个比特宽度为W的有符号数,其值往往可以表示为(令W = 4): -1*b3*2^3  +  b2*2^2 +  b1*2^1 + b0*2^0根据这一原理,给出以下Matlab 代码:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%…
如果你只需要对英文文本的每个字节进行数据处理,则无需考虑有符号数和无符号数的转换问题: 但如果你需要对含有中文的文本进行字节处理,则可能需要考虑有无符号数的转换问题. 以下代码均为Java代码. 1.有符号byte 转 无符号int: byte b= -120; int a= bytes & 0xff; 2.无符号int 转 有符号byte: int a= 300; byte b= (byte)a; 3.BigInteger 转 有符号byte BigInteger b= new BigInte…
昨天把这个发在了qzone,想来还是怪怪的,还是转过来不吧,纯当发现了一个虫子,玩笑一下.只是csdn如今不能贴图,挺郁闷的,原文在http://user.qzone.qq.com/110907073/blog/1264524991. 首先上图,今天我心血来潮想看看我的抢车位怎么个情况,不出意外应该还是排名第一把,尽管近期意外比較多.打开一看,吓了一跳,怎么排到第三去了,不急,看看第一第二比我多多少,再看,这才真吓了一跳,竟然是负数……无语,大家细致看图片,我的现金是22309730还有9880…
C语言中无符号数和有符号数之间的运算 C语言中有符号数和无符号数进行运算(包括逻辑运算和算术运算)默认会将有符号数看成无符号数进行运算,其中算术运算默认返回无符号数,逻辑运算当然是返回0或1了. unsigned int和int进行运算 直接看例子来说明问题吧 #include <iostream> using namespace std; int main() { ; unsigned ; if(a > b) cout<<"负数竟然大于正数了!\n";…