为啥整数的补码是其本身?//0001 的补码是多少?
为啥整数的补码是其本身?//0001 的补码是多少?
正整数的原码,反码,补码都是一样的,这是人为规定的,不需要理解.
正正数的:
原码 +5[0101]
反码 +5[0101]
补码 +5[0101]
负整数的:
原码 -5[1101]
反码 -5[1010]
补码 -5[1011]
你的问题,0001的补码是多少,
如果最高位0是符号位,补码仍然是0001
如果在这个之前还有其他符号位如 0 0001或1 0001
按照最高符号位判断,最高符号位为0反补都不变,最高符号位为1,反码取反,补码加1计算机为啥可以1111表示-1与15?//计算机是这样工作的:以最高位来判断是正数还是负数,最高位为0,则正;最高位为1,则负。//1111的最高位不是1吗?其实是这样的, 我们一般讨论二进制数 0001代表1,0010代表2,0000 1000代表8,1000 0000代表256时 是单纯的再讨论二进制数与十进制数的相互转换问题。而在讨论计算机内部,数据存储时,才会考虑最高位数据是否为0和1。 举个例子, 如果计算机int型数据只占内存4个二进制码即[0000]时,一个int的数据表达范围-7~+7 一般32位计算机int型数据占用[00000000 00000000 00000000 00000000]的空间。 而其中左面数第一个[00000000]段的,左面第一位,即为符号位。OXF可以代表-1与15 对啊?但是存储方式不同啊?0XFFFFFFFF//为啥这样表示-1 不好呀?0XF可以表示-1与15,不就容易混淆吗//32位机的一般用0xFFFFFFFF表示的时候,前两位大于80的才是负数。即0x80 00 00 00 以上的才是负数,包括这个数。 以内的都是整数 不能单独的拿出0xFF这样的表示方法。 0xFF,这是8位机 0xFF FF ,这是16位机不能单独的拿出0xFF这样的表示方法。//啥意思?0x80 00 00 00 以上的才是负数,包括这个数。//0x80 00 00 00代表那个负数?我不是说了 0xFF,这是8位机 0xFF FF ,这是16位机 直接写出0xFF这样的东西会让人误解,所以最好别这么写, 因为不知道这个到底是什么。他可以是8位机的内存地址,也可以是单纯的2位十六进制数 还可以是一段计算机指令,非得这么写,就必须说明这东西是干啥的。 0x80 00 00 00,代表的就是32位机中的整型-0,加1就是-1,加100就是-100 因为在计算机中,0有两种表示方法+0和-0,都合法呃,更正一下,0x80 00 00 00 是最大的负数,我算错了,抱歉啊。OXFFFF FFFF//不能表示-1呀?会让人误解啥呀?OXF表示-1 不让人误解呀?计算机是8位一个存储单元的 是32位机? 16位机 是4个?更正一下,之前说的0x80 00 00 00 是最大的负数,我算错了,抱歉了。 0xFF FF FF FF 确实能代表-1,但是你的说,这段东西是代表整型数据。 这么说就完全挑不出毛病,整型数据0xFFFF FFFF 等于-1一位,就是2的一次幂,就是一个0。 在32位计算机中,一个int数据占用4个字节,也就是32个零,因为一般认为一个字节=8位 但是这个概念是可以变的,讨论这个没实际意义。现在就规定一字节=8位。 因为一字节等于2位或4位使用起来很麻烦。话说,跑题了,补码的问题搞明白没啊,你这追问次数太多了,要扣分的。问题才刚刚开始........那就是说-1 可以用OXFFFFFFFF与0XF都可以表示对吧?这种表示的意思是说给人看,OXFFFFFFFF与0XF都可以表示-1 ?但是,计算机是先判断最高位是否为1,是1,则会对二进制的数判别为负数?计算机是8位一个存储单元的//对吗?那0XF不就存不到电脑上了吗?是的,计算机会判断第一位是啥米,不论多少位,先判断第一位是否为1