右移,补最高位是什么操作?
为有符号数除法。
a = $signed(4’d(-2)) = $signed(4’b(1110))
A1 = a/2 = $signed(4’d(-1)) = $signed(4’b(1111)) = $signed({a[3],a[3:1]})
A2 = a*2 = $signed(4’d(-4)) = $signed(4’b(1100)) = $signed({a[3:1],1’b0})
b = $signed(4’d(2)) = $signed(4’b(0010))
B1 = a/2 = $signed(4’d(1)) = $signed(4’b(0001)) = $signed({b[3],b[3:1]})
B2 = a*2 = $signed(4’d(4)) = $signed(4’b(0100)) = $signed({b[3:1],1’b0})
计算机中正数和负数都是用二进制补码形式来表示:
1.正数的原码、反码、补码等于它二进制的本身。
2.负数的原码就是在最高位写1;反码就是符号位为1,其余数字对原码取反;补码就是对反码的最后一位+1
求负数补码的两种办法:
1.用原码求负数补码
-2 的原码为:1010,求补码时,符号位不变,其余位数取反并在反码后+1 ,得到补码为:1110。
2.用模加上负值就得到负数补码
模的概念:从本质上说就是计算器在计算时产生溢出时的量,它的值在计算器中表示不出来,计算器只能表示出模的余数,如:表示范围为
0
−
2
4
−
1
0-2^{4-1}
0−24−1,其模为
2
4
2^4
24 ;
-2的补码为:16-2=14用二进制表示为:1110。
>>>这个符号是啥?
1、有符号数,符号位为1,使用>>>,高位补1;
2、有符号数,符号位为0,使用>>>,高位补0(和>>相同);