为什么这一句有16进制也有10进制?到底什么时候用什么进制? for(mask=0x01,i=0; i<8; mask<<=1,i++)
发布网友
发布时间:2022-04-29 22:34
我来回答
共4个回答
热心网友
时间:2023-10-09 20:08
16进制,10进制,8进制和2进制只是不同的表达方法,没有什么硬性规定在代码中必须使用什么进制。同一个数值你可以随意选择用不同的表达方法,对于编译器来说没什么不同。选用什么进制的根本原因在于代码的可读性,就是说为了让别人包括自己更好的理解你的代码,选择合适的进制。
举几个例子吧
1. 表达时间等 month = 12, day = 29 , hour = 22 , minute = 43, second = 15
这里用十进制比较合适,符合我们一般的语言习惯
2. 开关量可以用2进制和16进制。 因为可以用0,1直观的表达 OFF/ON的两个状态
数位比较少的建议用2进制
比如 char switches = 0b00110010 //从低到高,第2,5,6开关为ON,其他为OFF
数位比较多的建议用16进制
比如 int switches = 0x0705 //从低到高,第1,3,9,10,11开关为ON,其他为OFF
3. 很少情况会用8进制,可能在一些数据的压缩,解压缩的算法中会遇到
热心网友
时间:2023-10-09 20:09
16进制和10进制没有什么区别,只是观看的时候方便,比如有移位操作的时候,写成16进制格式会比10进制阅读起来更加方便,但对计算机而言,没区别
热心网友
时间:2023-10-09 20:09
16进制和10进制本来都是一样的额,为了方便写法不同而已
热心网友
时间:2023-10-09 20:10
有特别需要的时候用16进制,一般情况用十进制
16进制转换10进制,如何转换这个数字
可以先把16进制的转换成2进制,0F 01就是0000 1111 0000 0001,然后换成10进制就是3841了;16进制换成2进制是基础,一个1位的16进制数为一个4位的2进制数,本身没有什么诀窍,记住就可以了,0H(16进制)=0000(2进制)、1H=0001、2H=0010、3H=0011、4H=0100、5H=0101、6H=0110、7H=0111、8H=1000、9H=100...
16进制 0x01 0x01为什么等于257
你的0x01 0x01指的应该是0x0101,一个字节能表示0~255这256个数字,0x0101已经超出了一个字节所能表示的范围所以要用两个字节来表示。十六进制转10进制,直接进行权数加法:0 * 16 * 16 * 16 + 1 * 16 * 16 + 0 * 16 + 1 = 0 + 256 + 0 + 1 = 257 ;关于进制转换很多计算机入...
单片机C51课程设计 16进制转为10进制
Dis[2]=temp%100/10; Dis[3]=temp%10; for(i=0;i<4;i++) { if(Dis[i]==0) Dis[i]=0xff; else break; }}void Timer0Interrupt(void) interrupt 1{ TH0 = 0xF8; TL0 = 0x30; Seg=(++Seg)&0x03; P3=0x01<<Seg; //位选 if(Dis[Seg]!=...
用51单片机控制1602液晶显示10进制数字~~
(3j+2)*i=(3×33+2)×10=1010(微秒),可以认为是1毫秒 ***/void delay1ms(){unsigned char i,j; for(i=0;i<10;i++)for(j=0;j<33;j++); }/***函数功能:延时若干毫秒 入口参数:n***/void delay(unsigned char n){unsigned
0x0101是什么意思
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已经超出...
跪求单片机c51一个多功能时钟设计。要闹钟。调整时间、秒表、就行了...
#define DS1302_YEAR 0x8C#define DS1302_RAM(X) (0xC0+(X)*2) //用于计算 DS1302_RAM 地址的宏 void DS1302InputByte(unsigned char d) //实时时钟写入一字节(内部函数){ unsigned char i; ACC = d; for(i=8; i>0; i--) { DS1302_IO = ACC0; //相当于汇编中的 RRC DS1302_CLK =...
以16进制形式,打印1~F(15)位的乘法表,,谁能告诉我怎么做啊
int main(){ int i, j = 0x01;printf(" ");for(i = 0x01; i <= 0x0f; i++)printf("%5x", i);printf("\n---\n");for(i = 0x01; i <= 0x0F; i++){ printf("%5x|", j);for(j = 0x01; j <= i; j++){ printf("%5x", i * j);} printf("\n");...
c语言左移不理解,以为值t 变化为 1,2,4,8,10,20,40,80 为什么8...
0x 0000 1000 0x08 左移4 0x 0001 0000 0x10 <<---这里就是你说的10 ,其实是0X10。化成10进制就不是了。这是16进制的表示。不知道你看的懂吗?这是16进制的表示方法,前面带0x,你可以把它看成2部分,两边都是2进制。
shift=(shift<<1)|0x01这里是什么意思来着 各位大哥大姐帮帮忙啊,单片 ...
shift<<1表示将shift的二进制数左移一位,相当于十进制数乘以2 譬如shift=18,假设shift是unsigned char类型的,那么shift有8个字节,二进制数是00010010,左移1位以后,变成00100100,也就是10进制的36 然后|0x01,就是按位求或运算,1|1=1,1|0=1,0|0=0,0|1=1 00100100 | 00000001=00100101 ...
...1.输出X的16进制(%x)2.输出X的二进制 3.逆向输出X的二进制
&x);printf("%d的十六进制为: %.2x\n", x, x);// 正向输出printf("正向二进制: ");mask = 0x80;// 二进制的1000 000for(i = 7; i >= 0; --i){printf("%d", (x & mask) >> i);mask >>= 1;}printf("\n");// 反向输出printf("反向二进制: ");mask = 0x01;...