您当前的位置:首页 > 互联网教程

c语言选择题求解!

发布时间:2025-05-13 11:25:54    发布人:远客网络

c语言选择题求解!

一、c语言选择题求解!

27.-48中的48换成二进制是110000,一个字节是八个字位,由于是负数最高位就是1,则-48的原码就是10110000,再换成反码最高位不变(还是1),其他位0->1,1->0,反码就是11001111,反码在加1变到补码就是11010000

28.区位码0915,前两位看作一组,后两位为一组,分别化成十六进制,(09)10->(09)16,

(15)10->(0F)16,在每组分别加20H,09->29,0F->2F,所以换成国际码就是292FH

29.[X]补=10110100,由于最高位是1,所以是负数换成原码就先减1,在将除第一位都将0换成1,1换成0,则[X]的原码就是11001100,可以看成-1001100,[Y]补=01101010,所以y是正数则原码就是补码,原码为01101010,那(x-y)=(-1001100-1101010)=-(1001100+1101010)=-10010110,而由于一个字节只有8个字位,而最高位又要表示正负,所以溢出了

30.这道题后面两个我不知道,00111001是反码,由于最高位是0,所以是正数反码就是原码,那00111001=2^5+2^4+2^3+2^1=57

31.这个就要自己算了,不过可以发现B、C选项都是76,由于十进制是是十个一进,八进制是八个一进所以B>C,(76)8=7*8+6=(62)10,又由于62比67小,十六进制又比十进制大,所以D>C

33.A5=10*16+5=165,(140)11=1*121+4*11=165

正数不管是原码还是反码还是补码都是一样,

负数不管是原码还是反码还是补码最高位都是1,

负数原码变反码除最高位其他的都1变0,0变1,

二、c语言中补码怎么算的

C语言中,所有的整型数据实际存储的都是补码。要计算补码,先要知道原码的概念,原码也就是一个10进制数的二进制表达方式,比如100的原码为1100100。

1、对于无符号数以及有符号数中的正数,其补码就是原码本身;

2、对于有符号数中的负数,其补码为真值绝对值的反码加一,其中反码为原码按位取反。

三、C语言原码补码问题

1、你的这个是16的,我可以给你用8位解释一下(原理是一样的,我打起来比较方便~)

2、我们知道,8位二进制的补码表示范围是-128~127对吧。

3、而在计算机中数据都是以二进制补码进行存储的,那么-128的存储方式就是1000 0000,而它是没有原码和反码的,所以你不太能验证,对吧。

4、这是因为在计算机中,为了溢出特意定义的一个小玩意儿~

5、所以放到16来解释,它的最小值也是-32768。

6、但这已经是最小的数了,再减就会溢出……(理论上是这样的)

7、但是现实中的程序编译有一定的容错性,只要到了一定的计算机承认的位数就变成-1了。

8、这是因为计算机中的数好像一个轮回……

9、这个是我的计算机能接受的范围。

10、如果你的程序要求指定了16位,那么就是-1,如果高于16位,就是-32769。