高阶和​​低阶字节

时间:2017-11-05 02:07:20

标签: c bit console-output console-input

  

getchar()和putchar()的原型是:

     

int getchar(void);

     

int putchar(int c);

     

正如其原型所示,getchar()函数是   声明为返回一个整数。但是,您可以将此值赋值给   一个char变量,如通常所做的那样,因为该字符是   包含在低位字节中。(高位字节通常是   零。)

     

在putchar()的情况下类似,即使它被声明为采取   整数参数通常用一个字符来调用它   参数。实际只输出其参数的低位字节   到屏幕。

我正在研究Console I / O并遇到过这种情况。 高阶和低阶字节是什么意思?

在上述情况下它意味着什么?

2 个答案:

答案 0 :(得分:2)

在C中,int的大小是实现定义的,但通常是2或4个字节。高位字节将是包含值的最大部分的字节。低位字节将是包含值的最小部分的字节。例如,如果您有一个16位int,并且该值为5,243,那么您将以十六进制形式将其写为0x147B。高位字节是0x14,低位字节是0x7B。 char只有1个字节,因此它始终包含在最低位字节中。当以十六进制(以从左到右的方式)写入时,低位字节将始终是最右边的2位数,而高位字节将是最左边的2位数(假设它们将所有字节写出,包括领先的0)。

答案 1 :(得分:0)

我认为最好的比喻是查看十进制数字。

虽然事实并非如此,但为了这个类比的目的,我们假装char代表一个十进制数字,而int表示四位小数数字。如果您有char具有某个数值,则可以将char存储在int内,方法是将其写为整数的最后一位,并在前面填充三个零。例如,值7将表示为0007。在数值上,char7int0007彼此相同,因为我们用{0}填充了int。 "低位数字" int中的7将是最右边的那个,它具有值int,以及"高阶字节" char的其他三个值都是零。

实际上,在大多数系统中,int表示单个字节(8位),char由4个字节(32位)表示。您可以将int的值填充到char中,使三个高阶字节都保持值0,低阶字节保持int' s值。 int的低位字节有点像我们上面类比中的那个位置,而{{1}}的高位字节有点像数十,数百,在上面的比喻中有成千上万的人。