发布网友 发布时间: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。这是人为规定。