二进制,有符号数 10000000是十进制的多少

本文详细解析了计算机中负数在原码、反码和补码形式下的转换规则,并通过实例说明8位有符号数的取值范围。通过代码展示如何将-128的二进制表示转换成不同格式。

1.首先我们要知道在计算机数都是以二进制的补码形式存在的

2.要知道原码、反码、补码这三个概念

正数的原码、反码、补码都一样;

负数的原码是本身,反码是符号位不变,其他位按位取反,补码是反码加1;

3.回归正题,所以对于有符号数10000000,我们显然知道它是一个负数,我们想把它变成对应的十进制数应该先写出它的原码;负数原码的求法是:符号位不变,其他位减一取反;我们可以得到10000000,所以它的原码看起来是一个-0,我们将它约定成为-128;

这也是为什么,8位有符号数,取值范围是-128,127的原因

经过了下面的代码验证上面论述的正确性

module try1;
	logic [7:0] a = 8'b10000000;//128
	bit [7:0] b = 8'b10000000;//128
	byte signed_vec = 8'b10000000;//-128
	byte signed_vec1 = 8'b00000000;//0
	byte signed_vec2 = 8'b11111111;//-1
	byte signed_vec3 = 8'b01111111;//127
	
	bit [8:0] result_vec;
	initial begin
		$display("a = %d",a);
		$display("b = %d",b);
		$display("signed_vec = %d",signed_vec);
		$display("signed_vec1 = %d",signed_vec1);
		$display("signed_vec2 = %d",signed_vec2);
		$display("signed_vec3 = %d",signed_vec3);
		result_vec = signed_vec;//180
		$display("1--result_vec = 'h%x",result_vec);

		result_vec = unsigned'(signed_vec);//080
		$display("2--result_vec = %h",result_vec);

	end
endmodule;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值