0x01<<4是什么意思

wike2023-02-21  22

0x01是数字,十六进制的数字。其结果等效于1。在数学上就是1,只不过在计算机上用2进制和十六进制较多,所以用十六进制表示。<<是左移运算符,先把0x01换成二进制形式,1<<4,将1左移4位(左移时需要注意符号位问题,对无符号数,左移时右边位移入0;对于有符号的值,如果原来符号为0(该数为正),则右边也移入0.如果原来符号位为1,则左移时,右边移入0(逻辑左移))得到d。d和十六进制的1进行与运算得到f。若f不为0,则执行k++;若f为0,则跳出if语句。 0

0x0101意思:十六进制的格式。

例如:0x01意思是16^0=1,以0x开始的数据表示16进制。十六进制在数学中是一种逢16进1的进位制。一般用数字0到9和字母A到F(或a~f)表示,其中:A~F表示10~15,这些称作十六进制数字。

0x01,0x01指的应该是0x0101,一个字节能表示0~255这256个数字,0x0101已经超出了一个字节所能表示的范围所以要用两个字节来表示。十六进制转10进制,直接进行权数加法:0*16*16*16+1*16*16+0*16+1=0+256+0+1=257。

十六进制转义序列:

如 \x1abf4 ,可以使用任意多的十六进制数字,直至不是十六进制数字为止。16位的通用字符名(universe-character name):\u后面必须跟4个十六进制数字(不足四位前面用零补齐),表示Unicode中在0至0xFFFF之内的码位(但不能表示0xD800到0xDFFF之内的码点,Unicode标准规定这个范围内的码位保留,不表示字符)。

32位的通用字符名:\U后面必须跟8个十六进制数字(不足八位前面用零补齐),表示Unicode中所有可能的码位(除0xD800到0xDFFF之外)。

在C语言中,&可以用作取地址和按位与操作两种运算。不过取地址是针对变量的,当前&后是一个常量,在C语言中不允许取地址操作,所以这个是语句的一部分,前面还要有一个操作变量。比如a&0x01&是双目操作符,需要两个操作数,代表含义为按位与操作。计算时,按位计算,两个操作数上对应位的值如果均为1,则结果对应位上值为1,否则结果对应位上值为0。分析操作数0x01的二进制值为0000 0001,综合按位与的运算规则,可以知道除最低位外,结果值为0,最低位结果与前一个操作数的最低位相同。于是a&0x01就是取a的最低位值的运算。


转载请注明原文地址:https://juke.outofmemory.cn/read/2987114.html

最新回复(0)