c语言高低位
Ⅰ c语言高低位互换问题
<< >>要加括号有优先级的啊c=((b&0x0000ffff)<<16)+((b&0xffff0000)>>16);
Ⅱ C语言中高8位低8位问题
把8位二进制赋值给16位二进制的时候,要进行高位扩展。
例如把0xxxxxxx赋值给16位变量的结果是00000000 0xxxxxxx
再入把1xxxxxxx赋值给16位变量的结果是11111111 1xxxxxxx
所以,你看看下面的程序:
main()
{
char c='\376';
int i=c;
printf("c=%d,i=%d\n",c,i);
}
允许的结果是:
c=-2,i=-2
你能够理解吧。
Ⅲ c语言高低字节
int i占一个字的长度(16或32位),char c占一字节长度(8位)。scanf("%d", &c);其中%d说明是以int类型读进来,&c说明放到c位置。回头看看c位置一个字节装不下一个字,所以会覆盖掉i的低端部分。i是0到5,也就是
00000000,00000000到00000000,00000101高端部分本来就是0。
Ⅳ C语言中的高位字节和低位字节是什么意思
比如:一个字节=8bit计算机中用16表示一个数,比如0001 0001 1001 0001 ; 0001 0001就为高字节,1001 0001为低字节。0001 0001 1001 0001B(或者1191H)11H 91H说通俗点,就是把一个数用编码表示出来(一般十六进制或二进制),左边的一半数为高,右边一半数为低。
Ⅳ c语言中高字节和低字节是什么意思
当一个数据超过8位的时候就必须采用两个或多个字节进行存储,例如int类型是16位的数据类型,那么十进制数字256就分为两个字节进行存储0x01FF,其中高字节就是0x01,低字节就是0xFF。存储的时候应该是高字节在内存的低地址,低字节在内存的高地址
Ⅵ C语言类型转换 低高8位什么意思
char
占一个字节(Byte)
一个字节有8个位(bit)
turboc
时代
int
占2个字节
即16bit
,所以有高8位低8位(或者说高字节低字节)
Ⅶ c语言中如何把一个char的变量的高4位与低4位分离开来
高位还要右移4位。
例如:
char c=0x34,a,b;
a = (c & 0xf0)>>4;
b = (c & 0x0f);
printf("0x%02x 0x%02x",a,b);
输出0x03 0x04
Ⅷ 在学习C语言过程中:十六进制常量数据0x1234中为什么低8位是0x34高八位是0x12
高低位是给人看的,也就是说这是一个人为的规定。
比如0x1234, 占2字节16位,为了方便叙述,就规定这16位写成二进制形式时,从右向左分别为第0位,第1位,……,第15位。
这样0~7的一个字节,编号的数字较小,就被称为低八位,即低字节,对应的就是高八位,也就是高字节。
如果最开始定义的人,规定的是从左到右0~15,那么,就是0x12是高低八位了,就是一个命名的问题。
Ⅸ c语言实现2个字节的高低位转化
2个字节short
int
高低位转化:
short
int
y=0x7f21;
y
=
(
(y
&
0xff00)
>>
8)
|
(
(y
&
0x00ff
)
<<
8);
printf("%#x",y);
-------------------------------
也可以利用
union
union
B2
{
short
int
i;
unsigned
char
c[2];
//
。。。任意两字节类型
}
;
union
B2
x;
unsigned
char
tmp;
x.i=0x1234;
tmp
=
x.c[0];
x.c[0]=x.c[1];x.c[1]=tmp;
//
也可以用上面的位运算方法交换高低端
printf("%#x\n",x.i);
//
union
方法特别适合4字节8字节
大端小端码的转换操作。
Ⅹ C语言 对字节的高位和低位进行互换!
可以直接用位运算:按位与,按位或,移位等
#include "stdio.h"
int main()
{
unsigned char tmp1,tmp2;
printf("please input a char: ");
scanf("%c", &tmp1);
tmp2=
((tmp1&0x01)<<7)
|((tmp1&0x02)<<5)
|((tmp1&0x04)<<3)
|((tmp1&0x08)<<1)
|((tmp1&0x10)>>1)
|((tmp1&0x20)>>3)
|((tmp1&0x40)>>5)
|((tmp1&0x80)>>7);
printf("converted char is: %c\n", tmp2);
return 0;
}