(符号数)二进制乘法(从补码讲起)
1.为什么补码可以用来转换加减法:
因为补码的符号位是参与运算的,而原码和反码的符号为只是标识位;
e.g. (2-3)的补码 = (2)的补码+(-3)的补码=010 + 101 = 111 = -4+2+1 = 11 = 1 (这里的符号为的缺省,可能看起来有点奇怪,但是代入补码的计算公式还是很好理解的,补码为1,计算也为-1,所以表示-1的补码只需要一位bit);
2.这里顺便讲一下补码非:~x+1 == -x;
这个式子的解释其实是 (x的补码的非) == (-x的补码),但是在写位运算程序的时候不用刻意在原码和补码之间进行转化,因为计算机中默认有符号数用补码表示(这也是为什么计算机中的算数>>补的是符号位,与这里的默认补码表示一致。)。
这个式子也可以通过推倒进行理解,假设一个八位的补码,x + ~x = 1111 1111 = -1 ,移位可得标题中式子;
3.二进制乘法
原理: (x * y)的补码 = (x)的补码 * (y)的补码;
1,当x,y均为正数的时候不涉及符号为就略过;
2,当xy一正一负 :
(下标t代表补码)
上图中红色0为部位,补到两个乘数位数之和的位,防止溢出影响低位的精度,补1时尤为重要;(上面八位以外的部分省略了);
绿色1为补位和上面的例子相同,而红色部分在网上有很多有符号数和无符号数的例子,关键还是看第二个乘数(下面这个)的符号为是否为1,这里相当于(-8>>3)*0011 ,利用上面讲的补码非求出0011的负数;
3,当xy均为负数的时候,与2中第二种情况相近,最下一行需要求负数,补符号位1的操作更明显;
补充:
(1)负数在竖式中补位的目的:比如 101 + 10 (-3-2)中,当第二位(位数从一开始数)相加的时候,把10中的负权重位当作正权相加,补位后110 在不改变数值的情况下,使得正权负权对应相加;
(符号数)二进制乘法(从补码讲起)相关推荐
- 微机原理有符号数的真值与补码间的转换
有符号数的真值与补码间的转换 之前上课的时候一直没怎么弄清有符号数的真值与补码间怎么转换的,老师上课只讲了一下公式怎么用,但也没详细说是怎么来的,后来我想了一下,也差不多弄懂了. 为什么这里只讲有符号 ...
- Verilog学习笔记——有符号数的乘法和加法
有符号数的计算在 Verilog 中是一个很重要的问题(也很容易会被忽视),在使用 Verilog 语言编写 FIR 滤波器时,需要涉及到有符号数的加法和乘法,在之前的程序中我把所有的输入输出和中间信 ...
- 二进制补码计算——有符号数的乘法
位数问题 a_width位的a,乘以B_width位的b,结果的位数是A_width + B_width. 定点小数问题 小数位数等于a的小数位数,加上b的小数位数之和. 补码相乘问题 补码 * 补码 ...
- matlab中de 乘法符号,FPGA 中的有符号数乘法
FPGA中乘法器是很稀缺的资源,但也是我们做算法必不可少的资源.7系列及之前的FPGA都是25x18的DSP,UltraScale中是27x18,我们可以通过调IP Core的方式或者原语的方式来进行 ...
- FPGA 中的有符号数乘法
FPGA中乘法器是很稀缺的资源,但也是我们做算法必不可少的资源.7系列及之前的FPGA都是25x18的DSP,UltraScale中是27x18,我们可以通过调IP Core的方式或者原语的方式来 ...
- Verilog 和VHDL有符号数和无符号数相关运算
目录 一.Verilog有无符号数运算 1.有符号数和有符号数的加减运算(输入和输出为原码) 2.无符号数和有符号数的加减运算(输入和输出为原码) 3.有符号数和有符号数的乘法(输入和输出为原码) 二 ...
- 无符号数运算相减/有符号数表示运算问题(一)
参考链接:https://blog.csdn.net/qq_38608897/article/details/103966054?utm_medium=distribute.pc_relevant.n ...
- 有符号数与无符号数的加减法
声明: 本博文源自:http://www.echojb.com/computer/2016/10/06/227097.html 在此感谢博主! 一.有符号数的加减法 1.符号数与无符号数的人为规定性: ...
- 无符号、有符号数运算判溢出
目录 无符号数的运算(溢出看CF) 有符号数运算(溢出看OF)(都是补码进行运算,因为补码的符号位可以直接参与运算一套电路就ok) 例题 第一题 第二题 无符号数的运算(溢出看CF) (1)两个无符号 ...
- verilog中有符号数和无符号数的相关运算
目录 1.有符号数和有符号数的加减运算(输入和输出为原码) 2.无符号数和有符号数的加减运算(输入和输出为原码) 3.有符号数和有符号数的乘法(输入和输出为原码) 1.有符号数和有符号数的加减运算(输 ...
最新文章
- 【leetcode】45. Jump Game II 非负数组的最少跳跃步数
- python多边形裁剪
- 在Tomcat7.0中设置默认服务器和不加端口名访问
- 使用免费的云服务 AWS EC2
- 借助Java 8和lambdas,可以一起使用AssertJ和Awaitility
- 商业版《隋唐演义》三:收购瓦岗寨
- 经典排序算法 - 堆排序Heap sort
- 计算机专业基础 -- 数据库系统相关基础知识
- 【汇编语言】DOSBox教程
- 考研高等数学张宇30讲笔记——第二讲 数列极限
- php setlocale 中国,PHP setlocale无效
- 解决国外软件官网打不开,浏览器访问经常卡在正在建立TLS握手安全连接。
- JRs在看啥?- 虎扑社区用户行为分析
- 【2021-08-05 修订】【梳理】计算机网络:自顶向下方法 第六章 链路层和LAN(docx)
- 我的Go+语言初体验——在Docker建立一个可以用Go+语言开发的容器环境(以Ubuntu容器为例)
- 【181018】基于MFC文档方式制作的飞碟射击游戏
- 运算放大器(运放)运算方面的整理
- HTML学习笔记之类、布局、响应式设计(九)
- 来自滴滴、微博、唯品会、魅族、点评关于高可用架构的实践分享
- [入门刷机]小米8SE首刷机过程记录(无OTG线)