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

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;

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将二进制的带符号转换为十进制,可以使用以下步骤: 1. 确定二进制符号位和有效位。通常,最高位是符号位(0 表示正,1 表示负),其余位是有效位。 2. 如果符号位为 0,则该二进制表示正,直接将有效位转换为十进制即可。 3. 如果符号位为 1,则该二进制表示负。需要进行以下操作: - 取反:将有效位的每一位取反(0 变为 1,1 变为 0)。 - 加 1:对取反后的结果加 1。 4. 将取反加 1 后的结果转换为十进制。如果原二进制是正,结果就是负。 以下是一个示例代码,将二进制符号转换为十进制: ```c #include <stdio.h> int binaryToDecimal(int binary) { int decimal = 0; int base = 1; int isNegative = 0; // 如果二进制是负 if (binary < 0) { isNegative = 1; binary = -binary; } while (binary > 0) { int digit = binary % 10; // 如果是负,进行取反操作 if (isNegative) { digit = (digit == 0) ? 1 : 0; } decimal += digit * base; binary /= 10; base *= 2; } // 如果是负,加上符号 if (isNegative) { decimal = -decimal; } return decimal; } int main() { int binaryNum = 10110; int decimalNum = binaryToDecimal(binaryNum); printf("二进制 %d 转换为十进制为:%d\n", binaryNum, decimalNum); return 0; } ``` 输出结果将是: ``` 二进制 10110 转换为十进制为:-10 ``` 在上面的示例代码中,`binaryToDecimal` 函接受一个二进制作为输入,并返回对应的十进制。该函首先判断二进制符号位,然后根据符号位进行取反和加 1 操作,最后根据有效位计算十进制结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值