C语言问题 这句话是什么意思啊
答案:3 悬赏:0 手机版
解决时间 2021-04-15 16:44
- 提问者网友:精神病院里
- 2021-04-15 00:10
C语言问题 这句话是什么意思啊
最佳答案
- 五星知识达人网友:往事隔山水
- 2021-04-15 01:01
如:int b=322;char c2;c2=b;
结果:c2等于0x42
322是十进制的数,用16进制表示为0x142;二进制表示则为:0000 0001 0100 0010;
把低八位给 char型,就是说 0000 0001 不要了,留下 0100 0010=0x42,十进制是66;追问
最后一个输出是B为啥啊追答66指的是asic码值,对应的就是B追问低八位是指二进制的前八个数吗? 如果二进制不够八个数呢追答不是,从左往右数八个,这八个就是第八位;再往前数八个,是高八位;
二进制不够往前补零追问例如0000 0001 0100 0010 低八位就是0000 0100高八位就是0100 0010
例如二进制是101往前补0就是0000 0000 0000 0101 低八位是0000 0000 高八位是0000 0101
是这样吗????追答说反了,从左数8位是第八位例如0000 0001 0100 0010 低八位就是0100 0010 高八位就是0000 0001
结果:c2等于0x42
322是十进制的数,用16进制表示为0x142;二进制表示则为:0000 0001 0100 0010;
把低八位给 char型,就是说 0000 0001 不要了,留下 0100 0010=0x42,十进制是66;追问
最后一个输出是B为啥啊追答66指的是asic码值,对应的就是B追问低八位是指二进制的前八个数吗? 如果二进制不够八个数呢追答不是,从左往右数八个,这八个就是第八位;再往前数八个,是高八位;
二进制不够往前补零追问例如0000 0001 0100 0010 低八位就是0000 0100高八位就是0100 0010
例如二进制是101往前补0就是0000 0000 0000 0101 低八位是0000 0000 高八位是0000 0101
是这样吗????追答说反了,从左数8位是第八位例如0000 0001 0100 0010 低八位就是0100 0010 高八位就是0000 0001
全部回答
- 1楼网友:長槍戰八方
- 2021-04-15 02:51
整形是2字节16位,字符型是1字节8位,所以赋值后只有低八位追问低八位是指二进制的前八个数吗? 如果二进制不够八个数呢追答前后要看字节序
一个字节就是8位,不存在不够的情况
一个字节就是8位,不存在不够的情况
- 2楼网友:雾月
- 2021-04-15 01:38
字符型变量,实际上是1字节长度的整型。
整型,short int 2 字节, long int 4 字节。
整型 赋给 字符型变量, 会“截断” 数据, 相当于 传了一个字节到字符型变量里。
例如:
#include
int main( )
{
char a ;
int i=456;
a=i;
printf("i=%d 0x%04x\n",i,i);
printf("a=%d 0x%04x\n",0xff & a,0xff & a);
return 0;
}
输出:
i=456 0x01c8
a=200 (或 -56) 0x00c8
从16进制数可以看出,原来2个字节: 01 和 c8, 只传了 1个字节 c8 到 char a.追问oxff&a是什么意思啊 后面都不懂追答%d %x 格式 输出 int 型 按 4 字节考虑,0xff & a 通过按位与运算,取一个字节 输出。因为 char a; 长度是 1个字节。
16进制数, 每 2位 占用 1 个字节。
10进制i=456,它的16进制值 等于 01c8, c/c++ 表示 16进制常数,添前缀 0x,
写成 0x01c8。
整型,short int 2 字节, long int 4 字节。
整型 赋给 字符型变量, 会“截断” 数据, 相当于 传了一个字节到字符型变量里。
例如:
#include
int main( )
{
char a ;
int i=456;
a=i;
printf("i=%d 0x%04x\n",i,i);
printf("a=%d 0x%04x\n",0xff & a,0xff & a);
return 0;
}
输出:
i=456 0x01c8
a=200 (或 -56) 0x00c8
从16进制数可以看出,原来2个字节: 01 和 c8, 只传了 1个字节 c8 到 char a.追问oxff&a是什么意思啊 后面都不懂追答%d %x 格式 输出 int 型 按 4 字节考虑,0xff & a 通过按位与运算,取一个字节 输出。因为 char a; 长度是 1个字节。
16进制数, 每 2位 占用 1 个字节。
10进制i=456,它的16进制值 等于 01c8, c/c++ 表示 16进制常数,添前缀 0x,
写成 0x01c8。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯