反补得到有符号的二进制,二进制取反运算符
x位二进制数 原反补能表示的数的范围.最好有点推断
x位二进制数原码是最高位为符号位其他位表示此数的绝对值的二进制数值. 反码是除了符号位的反码表示,补码是反码加1 假设x为8 则原码范围是从01111111~10000000 即127~-128 反码范围是01111111~100000000 (正数的反码和补码和原码相同) 补码范围是01111111~11111111 关键数值点是-1,-127,-128 首先正数不管因为反码原码补码都相同. 看-1: 原码10000001 反码11111110 补码是11111111 -127:原码11111111 反码10000000 补码是10000001 -128不能用正常的原码反码表示但是可以这么想-128=-127-1 所以补码是10000001-1=10000000 所以范围是01111111~10000000 其他位数的表示范围算法也是一样的.
二进制取补运算 有符号输出
int s1 = 10;
32位整数的二进制为:
00000000 00000000 00000000 00001010
s1 = ~s1;
按位取反之后为:
11111111 11111111 11111111 11110101
由于是有符号整数(int),并且最高位是1,所以是负数。
负数的真值为补码,即除了符号位以外,每位取反,结果加1:
1、除符号位以外,每位取反:
10000000 00000000 00000000 00001010
2、结果加1:
10000000 00000000 00000000 00001011
所以是-11.
如果还有疑问,可以找 原码、反码、补码相关的知识看看。
用补码表示有符号的二进制数11010对应的十进制数字是?
如果它是5位二进制数,则符号位是1为负数,剩下部分-1得1001,然后取反码得到0110,对应的十进制数字是6,最后的结果为-6。
如果它是大于5位的二进制数,直接算就好,结果为26。
希望能帮到你。
二进制数(最高位为符号位)的反码和补码
二进制数,
正数 的 反码和补码 就是它自己, 或说 正数 没有反码和补码。
负数 有 反码和补码。
负数反码,符号位搁置不动,其它位,把原码 1 变0, 原码0 变1。
负数补码, 等于 反码 加 1。
二进制数,通常是 1字节 (8 位 2 进制),或 2字节,4 字节。
你的题目 却是 6 位。按理,1字节(应有8位),写6位,那么它符号位是 0, 就是正数,反码和补码 就是它自己。
如果原码是 10111011, 反码就是 11000100, 补码是 11000101
如果原码是 10011011,反码就是 11100100,补码是 11100101
写出带符号位二进制数001010的反码补码
带符号位二进制数001010的原码是0,01010是一个正数所以其对应的补码是0,01010,而其对应的反码也是0,01010