微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微波和射频技术 > 射频综合技术问答 > 一个关于无符号数和有符号数的问题,各路大神来看看

一个关于无符号数和有符号数的问题,各路大神来看看

时间:10-02 整理:3721RD 点击:
r e g [0:5] B a r;
i n t e g e r T a b;
B a r = - 4'd12/4;
T a b = - 4'd12 /4;
请教大家一个问题
最终bar和tab的值是多少?
Bar定义为寄存器变量,默认的是无符号型,tab定义整型,默认32位无符号型。
书上说bar的最终结果是:61,tab的最终结果是:1073741821
但是我总觉得bar的最终结果是13  (001101)
请教大家,应该到底是多少呢?

Bar 是6位的,Bar=-4‘d12/4 ,那就是-3,
最高位是符号位
10,0011 --- 原码
11,1100  ----- 反码
11,1101 ------ 补码
负数就是按补码来的;11,1101 是多少? 就是61

另外一个也是先算的补码,因为tab是整形变量,默认32位,所以- 4'd12要先转化为32位的补码为FFFF_FFF4再进行计算,因为基数形式默认的是无符号型,所以便是:FFFF_FFF4/4=3FFF_FFFD它的十进制数就是:1073741821。这个数就是这么来的。所以我Bar的结果我总感觉不对,觉得应该是先将- 4'd12转化为6位的二进制补码110100=52,然后再除以4,结果得到的应该是13.

那么书上的就是错的喽,谢谢大家

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top