我想向你请教一下关于C51中十六进制计算的问题
看见你给别人答题的时候说因为单片机中只有二进制,所以可以直接用十六进制数直接除十进制数得到商和余,我有一点不明白的就是,这里的十六进制数和十进制数都应当是什么数据类型,都...
看见你给别人答题的时候说因为单片机中只有二进制,所以可以直接用十六进制数直接除十进制数得到商和余,我有一点不明白的就是,这里的十六进制数和十进制数都应当是什么数据类型,都是unsigned char型可以么
展开
1个回答
展开全部
虽然我不是你想要找的那个人,但我也可以为你解答
十六进制数从0开始到15结束,大于9的用字母表达,其写法如下
0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
而十进制数则是从0开始,到9结束 0,1,2,3,4,5,6,7,8,9
所以在单片机中,十六进制数用 char 字符形式存储,为便于区分,则用 0x作为开头
如 0x56 0xbf 0xff 等等
二进制中,则只有0和1,十六进制中的一个字符可以代表二进制的四个位
例如二进制数 1111 可以用十六进制 F 表达,二进制数 0000 则用十六进制数 0表达
转换成单片机的语言 就是 0xf 0x0 ,
在单片机的每个P口,都有8个位端口,如果把8个位全部设为1,就是高电平状态
就可以用十六进制数 0xff ,比起二进制的 1111 1111 简化了很多,所以单片机语言规定使用十六进制数来表示 二进制数
至于你说的商和余,只是把两位的十六进制数中的十位和个位分开的一种方法
十六进制数 0xf0 十位是f,个位是0,F0除以10,得到带有小数的数值,存储在整型变量中则自动扔掉小数部分,就刚好得到的是F,如果加上求余符号,那就是只留小数部分
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询