这个
里面输入的是10进制数,譬如输入74,那么除法运算里面是按10进制数取出了7吗,是因为后面除以10是10进制吗,后面的右移4位中这里是变成了16进制吗,是不是10进制进去计算机会自动转换为16进制,但是在运算时如果对应的是10进制,则会自动以10进制的形式参与运算。希望各位高手帮一下忙,急,在线等。
那74是0x4A除以10难道按照2进制计算吗,那结果是什么啊。操作数是10进制的也会按照二级制计算?但是这个应该是把7和4分别取出来,按照你说的,取出来是什么啊?
追答取出来的就是7和4,你不用管那些计算机的原理,只管语言对数字的处理就可以了:正常的数字都是十进制的(没有前缀的数字);在移位运算的时候就会按二进制算。
数字在计算机里是二进制存在的,并不是因为参与什么运算就变成了某某进制。
你输入74,只不过是为了人阅读方便是十进制,但是在计算机中还是二进制存在的。这是发明计算机时就规定好的,二进制便于电路实现,(电路有开关两种状态)
另外你说的那个是左移4位吧
uc_Year10y = uc_DS***/10 ---->目的是将数字的各位去掉,比如输入174,那么变成17了
uc_Year1y= uc_DS***%10------>目的是取出数字的各位部分,比如输入174,结果为4
uc_DS1339Yearval = (uc_Year10y << 4)|uc_Year1y------>这句话的意思很明白了
因为uc_DS1339Yearval是个char型,一共8位,左移以后,高四位用来存uc_Year10y,低四位用来存储uc_Year1y
最后那句话貌似要将uc_DS1339Yearval存储到某个位置(猜测)
老大,这个程序我读懂了,我看大家的回答,输入74存到电脑里面不应该是0100 1010,怎么变成0111 0100啊?按照四楼的说法的话。关键是我现在是程序理解是什么意思,但是前后的进制算法弄糊涂了。我刚开始是这样理解的,74,取高位除以10,计算余数取低位,但是我现在是按照10进制取数,后面移位是16进制,我现在比较疑问的是:计算机存储肯定是按照2进制,但是第一个计算我是按照10进制取数的啊,所以我现在的疑问是这个?
追答十进制,16进制只不过是人脑中的概念而已,计算机只知道二进制。
比如uc_Year10y在计算机中就是二进制存储的,你要对它进行除法运算,实际上编译器将这个操作转化成底层运算器的操作,而底层预算器不知道十进制,只知道二进制(高低电平),编译器将这种人理解的除法预算,转化成什么二进制操作,返回的二进制结果进过编译器解析,可以成为人可读的十进制。
按照你的说法,174存储到里面之后应该是2进制,但是计算的时候为什么又以10进制在计算呢,174/10=17......4,这不是前后矛盾吗?我的意思是:计算机存储肯定都是以2进制啊,但是做除以10运算的时候,因为所给的10是10进制数,所以这时候程序实际上是按10进制计算的,这样才是174/10啊,要不然难道是174的2进制(0x1E)和10(0xA)相除吗?我理解程序的意思,现在是我想多了,困在这了,理论俺都了,不知道各位大哥懂我的意思。
追答计算机做的是174的2进制(0x1E)和10(0xA)相除
看看计算机组成原理,或许对你的问题有所帮助
这个我知道,关键是最后不是左移四位,这时候肯定是安16进制来说的啊,要不然10进制怎么左移4位啊,我的意思是前面是10进制,譬如说74,但是74会以2进制保存,这时候除以10取7的时候计算是不是默认10进制,其实存到计算机里面的是2进制,所以才有后面的可以移位
追答10机制照样左移啊
你那个左移4 相当于乘以16
例 a=1; a=a<<4; 这时候a=16了
估计你是想的太多了
就是里面每一句指令里面参与的数据的进制数,帮忙描述一下,譬如说74年 ,帮忙把74分析一下在每句之后的结果和分析过程