首页 行业资讯 宠物日常 宠物养护 宠物健康 宠物故事

有符号位的二进制数,在计算原码和补码时那个符号位是始终不变的吗?

发布网友 发布时间:2022-04-26 23:47

我来回答

3个回答

热心网友 时间:2022-06-20 09:56

对于无符号数而言,没有什么原码、反码、补码的概念,只有绝对值。

对于带符号数,才会有采用什么码型来表示的问题。10000000确实是-128的补码。对于带符号数,最高位是符号位,0表示正数、1表示负数,始终不变。所有的码型换算,都只针对低位的绝对值部分进行。

例如12的原码是00001100,-12的原码是10001100。对其绝对值部分0001100求反加1得1110100,最高位添上符号位1,就是补码11110100。

所以码型转换运算只针对绝对值部分,不针对符号位,符号位始终不变。

因为对于带符号数而言,真正的表示范围是-127~+127,这其中包含了两个0:+0(00000000)和-0(10000000)。而实际应用中,0是没有符号的,所以规定0用+0来表示,那么-0就是一个没有用的二进制码了,而对于低7位而言,模为128,那么128与0就是等值的,此时符号位是负的,于是规定-0就表示-128。这是人为规定。

热心网友 时间:2022-06-20 09:57

根本就不用费那么多事。

正数的补码,就是该数本身。

负数的补码,就用其正数,减一取反,就成可了。

例如,已知:+9 的补码是:0000 1001。

求-9 补码步骤如下:

 先减一:0000 1001-1 = 0000 1000。

 再取反,即得:-9 补码 = 1111 0111。

这不就完了吗?

原码反码符号位,这些,都是垃圾。

热心网友 时间:2022-06-20 09:57

对于无符号数而言,没有什么原码、反码、补码的概念,只有绝对值。
对于带符号数,才会有采用什么码型来表示的问题。10000000确实是-128的补码。对于带符号数,最高位是符号位,0表示正数、1表示负数,始终不变。所有的码型换算,都只针对低位的绝对值部分进行。
例如12的原码是00001100,-12的原码是10001100。对其绝对值部分0001100求反加1得1110100,最高位添上符号位1,就是补码11110100。
所以码型转换运算只针对绝对值部分,不针对符号位,符号位始终不变。追问那-128用补码表示,过程是怎样的?128的的原码是10000000,取其绝对值部分 0000000求反得
1111111,加1得0000000(是只取后7位吗?),再在首位添上1得10000000.

追答是的。因为对于带符号数而言,真正的表示范围是-127~+127,这其中包含了两个0:+0(00000000)和-0(10000000)。而实际应用中,0是没有符号的,所以规定0用+0来表示,那么-0就是一个没有用的二进制码了,而对于低7位而言,模为128,那么128与0就是等值的,此时符号位是负的,于是规定-0就表示-128。这是人为规定。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com