最后一个 字节 指什么最后 一个字节 的信息又指什么,一字节能等同于一个字符吗
一个字节8位,就是2进制8位。最后一个字节就是最低的8位,就是01111001,一个字符占一个字节
我想问的是,一个int型在32位中是4个字节,在64位中是8个字节,难道他这是在16位的系统中?
1.首先第一点是回答你后面的问题,这个关系到C语言。在C里,char是一字节的变量,因此可以认为char和1个字节是划等号的,完全等同。
2.其次是前一个问题。要稍微解释一下。这个事情事关Intel CPU。
2.1.在Intel架构中,一个整数测存放是低位在前,高位在后。
2.2.因此代表这个整数的变量,如果转为char的话,代表的是这个整数的最低位。
2.3.同理,代表这个整数的指针,如果转为一个char*的话,它指向的是这个整数的最低位。*
2.4书上说的最后一个字节,意思是“用普通形式表现这个整数的最后一个字节”,对IntelCPU来说也就是内存块的第一个字节。因此用这种表示方法。
比如说举的例子是377,它的二进制是101111001,实际在内存中存放的方法是两个字节,低位在前(01111001,00000001),
因此把这个变量转为char之后,结果就是01111001,也就是16进制79,10进制121,表示为字符是'y'(这个查ASCII码表)
关键字:小端存储。把这个搞懂就差不多了
在C语言中,Char类型表示一个字节,一个字节就是八位:0000 0000八位二进制数就会对应一个十进制数;
比如0000 0001对应的就是十进制数的1;
然而题目中提到的a=377,表示成为二进制数为0000 0001 0111 1001,前面八位是高位字节,后面八位是低位字节,char类型只取低位字节。
377怎么换算成二进制呢,就是不断的除二取余法,把余数倒过来就是二进制数。
结果第八位的数01111001 = __1*1_+2*0+4*0+8*1+16*1+32*1+64*1+128*0 = 121_结果就是121了
然后你去查ASC码表就知道是y,结果就是输出y了