二进制正负数的原码、反码、补码之间的转化

首先,计算机都是使用二进制的补码进行计算。

 

1、正数的二进制原码、反码、补码都是相同的

 

2、负数的二进制原码:负数的绝对值的二进制的最高位变为1(1是标志位,只用来表示正负,1表示负数,0表示是正数。所以八位二进制的取值范围是[-127,127]),其余位与正数原码相同。

比如-32

第一步:32(10)=00100000(2)

第二步:最高位变为1:10100000

 

3、负数的反码:等于原码的最高位不变,其余取反。

比如-32

原码为:10100000

反码为:11011111

 

4、负数的补码:等于原码的最高位不变,其余取反,然后加一。

比如-32

第一步,原码为:10100000

第二步,最高位不变取反:11011111

第三步,加一得补码:11100000

 

转载于:https://www.cnblogs.com/red-code/p/6520462.html

在 JavaScript 中,可以使用 `toString()` 方法将一个字转换为二进制字符串,然后使用一些技巧来处理负的情况。 下面是一个将负转换为二进制字符串的示例代码: ```javascript function toBinaryString(number) { if (number >= 0) { return number.toString(2); } else { // 将负转换为补码表示 const positiveBinary = Math.abs(number).toString(2); const invertedBinary = positiveBinary.split('').map(bit => bit === '0' ? '1' : '0').join(''); let binaryString = ''; for(let i = invertedBinary.length - 1; i >= 0; i--) { if (invertedBinary[i] === '1') { binaryString = '1' + binaryString; break; } else { binaryString = '0' + binaryString; } } return '-' + binaryString; } } console.log(toBinaryString(10)); // 输出: "1010" console.log(toBinaryString(-10)); // 输出: "-1010" ``` 这段代码中,我们首先判断输入的字是否为正,如果是正则直接使用 `toString(2)` 方法将其转换为二进制字符串。对于负,我们首先将其转换为补码表示。然后对补码字符串按位取反,并将结果保存在 `invertedBinary` 变量中。接下来,我们从右向左遍历 `invertedBinary`,找到第一个为 1 的位,将其之前的所有位都添加到 `binaryString` 中。最后,将 `-` 和 `binaryString` 拼接在一起,得到负二进制表示。 注意:这只是一个简单的示例代码,不考虑据溢出等情况。在实际应用中,请根据具体需求进行适当的处理和验证。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值