2014-09-29 37 views
0

课本:C++输出的1字节澄清

enter image description here

所以我知道一个字节有8位,右位移加零位的左侧和右侧弹出关位。 但是它如何使用上面的例子来输出一个字节? 我会一直期待:

putchar(b >> 8) 
putchar(b >> 7) 
putchar(b >> 6) 
etc. 

因为我承担的putchar输出弹出位?

回答

1

putchar打印出与给定整数对应的ascii字符。

putchar(0x41)将整数0x41转换为unsigned char(大小为一个字节),并打印出对应于0x41(即“A”)的ascii字符。

这里要实现的关键是,putchar只看低8位,即putchar(0x41)putchar(0xffffff41)也是一样的。

现在让我们看看当你将某些东西传递给上面的函数时会发生什么。

outbyte(0x41424344);

第一它由24位bitshifts B,然后在该值调用的putchar 0x41424344 << 24; //0x00000041 putchar(0x00000041); //A

然后它由16位bitshifts B,然后在该值调用的putchar 0x41424344 << 24; //0x00004142 putchar(0x00004142); //B

在这里它是在行动:http://ideone.com/3xeFSx

+0

Ooooh,所以教科书在最后一次putchar调用发生了错误。 – NoName 2014-09-29 19:03:16