有符号数中,原码、反码、补码,最高位是数符位,用于表示正负;无符号数中,所有的位都用于直接表示该值的大小,最高位非符号位.所以,无符号数无所谓原码、反码、补码.
不同的编译器得到的结果是不同的,可以先测试一下sizeof(int)的值.如果结果为4,那么结果就是 2的16次方 + 小 - 大;如果结果为8,那么结果就是 2的32次方 + 小 - 大.
首先,必须知道计算机中数值一般以补码表示!其次分为有符号数跟无符号数.有符号数的最前一位为符号位,该位为0则为正数,为1则为负数,其它位数为数值的大小!计算数值的方法就是符号位不变,先减1再变反!而无符号数就不存在符号位,减1再全部变反,就是所得的数值!关于十六进制的就不多说了!
如果101011是原码的话,从左到右第一位是符号位,指正负,0为正,1为负 (1)01011指数字 那么这个数字就是-01011(二进制) 变成反码就是符号位为1,其他位按位取反,为110100 补码就是反码+1,为110101 无符号数就是它本身 移码就是在补码的基础上符号位取反,为010101
原码、反码、补码,是应用在“有”符号数上的. 对于“无”符号二进制数,不存在“补码”的说法.
有符号数的实例 有符号数是针对二进制来讲的. 用最高位作为符号位,“0”代表“+”,“1”代表“-”;其余数位用作数值位,代表数值. 有符号数的表示:计算机中的数据用二进制表示,数的符号也只能用0/1表示.一般用最高有效位(
计算机中有符号数都是用补码形式的,-5h放入bx中,补码数码是1111111111111010b,即十六进制 fffdh
最明显的区别就是二者表示的范围不同:无符号数中,所有的位都用于直接表示该值的大小.有符号数中最高位用于表示正负,所以,当为正值时,该数的最大值就会变小.我们举一个字节的数值对比: 无符号数: 1111 1111 值:255 1* 27 +
负数才有补码.正数和无符号数的原码补码是一模一样的-- 就是他本身.
符号一般指的就是 “正号”、“负号”;比如: - 1 ( 负 1);有符号数是针对二进制来讲的.用最高位作为符号位,“0”代表“+”,“1”代表“-” ;其余数位用作数值位,代表数值.有符号数的表示:计算机中的数据用二进制表示,数的符号也只能用0/1表示.一般用最高有效位(MSB)来表示数的符号,正数用0表示,负数用1表示.有符号数的编码方式,常用的是补码,另外还有原码和反码等.用不同二进制编码方式表示有符号数时,所得到的机器数可能不一样,但是真值是相同的.