永发信息网

C语言程序的小问题,背景:一个数据有两个寄存器,高八位H,低八位L,现在要将他俩合成转化成十进制的

答案:2  悬赏:70  手机版
解决时间 2021-11-11 08:47
C语言程序的小问题,背景:一个数据有两个寄存器,高八位H,低八位L,现在要将他俩合成转化成十进制的
最佳答案
int temp =(H<<8)|L; 声明 temp 是整型变量,初始化为 表达式 (H<<8)|L 的 值。
H 是 高位的 整型数值 -- unsigned char.
L 是 低位的 整型数值 -- unsigned char.
H<<8 H 左移(二进制)八位。
| 是 按位加 (按位" 或" )
(H<<8)|L 用位运算方法 构成 unsigned short int 再 转换为 int 型
-----------------------------------
int temp =(H<<8)+ L;
这里用 加法运算,理论上 也可以。位运算速度快一点。
===========================
unsigned char H=0xff, L=0xaa;
int temp =(H<<8) + L;
printf("%#x %d\n",temp,temp);
temp =(H<<8) | L;
printf("%#x %d",temp,temp);

输出没区别。
全部回答
这两条语句都可以实现题面的要求。设H寄存器中为XXXXXXXX,L寄存器中为yyyyyyyy,则有:
(H<<8)|L写成二进制数据是XXXXXXXX00000000 | yyyyyyyy,结果是XXXXXXXXyyyyyyyy;

(H<<8)+L写成二进制数据是XXXXXXXX00000000 + yyyyyyyy,结果也是XXXXXXXXyyyyyyyy。

但有一点要注意,就是原先的高8位和低8位只要这样简单组合就确实是你需要的10进制数!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
这题为什么这样解
石家庄那有卖铜棒的铜管的。谢谢
什么手串不怕水
请问什么是“Vinyl”材料?这种材料可以用于
香港能不能搞公投脱离中国统治?
john(never see) snow in this lifetime填什
#安装预算#做安装一年了 工资只够吃住 该不该
g–shock表盘和表带交接处断裂
+1 (737) 781-1548这是哪的号码
安徽深燃天燃气控股公司是国企还是私企?
甘肃国际旅行社在甘肃旅游的精品线路
谁能借我cf号
我的布娃娃作文l200字
佳能打印机2545i 提示错误#853
有一部日剧女主的爷爷是亿万富翁
推荐资讯
金蟾如何开光
中国移动怎么网上缴费??
SCR.GTO.GTR功率MOSFET。IGBT的各自优缺点
桃花依旧笑春风第几集上云岫说出自己是贺桃花
若关于x的不等式(2x-1)平方<ax的平方的解集中
河北省保定市第二十四中学地址在什么地方,我
设函数f(x)=e^x(x-ae^x)恰有两个极值点x1x2
鹅怎样煮才好吃呢?
近似数是6.7的两位小数有6.70,6.71,6.72,6.73
兴义民族师范学院-欣星午托园地址在什么地方
琳音艺术培训学校地址在什么地方,想过去办事
中国电信(三环通讯电信合作营业厅)地址在哪,
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?