首页 文章

高阶和低阶字节

提问于
浏览
0

getchar()和putchar()的原型是:int getchar(void); int putchar(int c);正如其原型所示,getchar()函数被声明为返回一个整数 . 但是,您可以像往常一样将此值赋给char变量,因为该字符包含在低位字节中 . -order字节通常为零 . )在putchar()的情况下,即使它被声明为采用整数参数,您通常也会使用字符参数调用它 . 只有它的参数的低位字节实际输出到屏幕 .

我正在研究Console I / O并遇到了这个问题 . What do you mean by high order and low order bytes?

And What does it mean in the above context?

2 回答

  • 0

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

  • 2

    我认为最好的比喻就是看十进制数 .

    虽然这不是't literally how things work, for the purposes of this analogy let'假装 char 代表一个十进制数字,而 int 代表四个十进制数字 . 如果你有一个带有一些数值的 char ,你可以将 char 存储在 int 中,将其写为整数的最后一位,用三个零填充前面 . 例如,值 7 将表示为 0007 . 在数字上, char7int0007 彼此相同,因为我们用零填充了 int . int 的"low-order digit"将是最右边的那个,其值为 7 ,而 int 的"high-order bytes"将是其他三个值,它们都是零 .

    实际上,在大多数系统中, char 表示单个字节(8位), int 表示四个字节(32位) . 您可以将 char 的值填充到 int 中,使三个高位字节都保持值0,低位字节保存 char 的值 . int 的低位字节有点像我们上面类比中的那个,而 int 的高阶字节有点像上面类比中的数十,数百和数千个位置 .

相关问题