0

来自教科书:

在此处输入图像描述

所以我知道一个字节有 8 位,右位移向左边添加零位,并从右边弹出位。但是如何使用上面的例子来输出一个字节呢?我本来期望:

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

因为我假设 putchar 输出弹出的位?

4

1 回答 1

1

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

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

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

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

outbyte(0x41424344);

首先它将 b 位移 24 位,然后在该值上调用 putchar 0x41424344 << 24; //0x00000041 putchar(0x00000041); //A

然后它将 b 位移 16 位,然后在该值上调用 putchar 0x41424344 << 24; //0x00004142 putchar(0x00004142); //B

等等

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

于 2014-09-29T18:37:58.183 回答