一个关于无符号数和有符号数的问题,各路大神来看看
时间: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)
请教大家,应该到底是多少呢?
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.
那么书上的就是错的喽,谢谢大家