C语言题,求指点!!

8的二进制是1000 这题答案为什么要在前面加那么多的1
2024-11-23 05:18:28
推荐回答(3个)
回答1:

首先你得了解计算机中所有的数据都是2进制存储的,所以然后-8是个负整数,从选项答案中可知这个计算机是个16位计算机(因为答案都是16位的二进制数),其中第一位是符号位,正数是0,负数是1,其余位数是具体表示
而数值在计算机中存储都是以它的补码形式存储的,什么是补码你可以去网上了解下计算机数的真值、原码、补码相关内容。正整数原码等于补码,负整数的补码等于原码除符号位外所有位数取反,然后加1
那么题目中-8的原码=1000 0000 0000 1000
除符号位外取反=1111 1111 1111 0111
然后再加1 = 1111 1111 1111 1000
所以选A

回答2:

这是32位二进制最高位为符号位,0表示正数,1表示负数,剩下的31位表示的范围是:±(2^31-1)之间。也就是这里的最高位的1表示是负数,后面的1000表示8,所以结果就是-8呀。如果没有前面的1,那表示的就是8,不符合题意

回答3:

上学没听课吧?这是补码格式,把每个选项加上8的补码值1000,和为0(最高位的进位要丢弃)的那个答案就是对的