2641|16

853

帖子

3

TA的资源

版主

楼主
 

整数相除问题 [复制链接]

 

两个整数a=3,b=2;

两数相除得整数 c=a/b(c得值为整数1,实际应为1.5),

如果将相除得到的整数c,向左移一位的话,c的值为10还是15?

此帖出自51单片机论坛

最新回复

看其他人解释应该是×2   详情 回复 发表于 2022-6-8 09:21
点赞 关注
 

回复
举报

2万

帖子

0

TA的资源

超级版主

沙发
 

『如果将相除得到的整数c,向左移一位的话,c的值为10还是15?』

计算机使用二进制。左移一位是移二进制的一位。

此帖出自51单片机论坛

点评

『如果将相除得到的整数c,向左移一位的话,c的值为10还是15?』 我这里描述有点问题,不是左移,是商c=3/2, 得到的c*10,能不能得到15,因为使用的语言是Verilog,没有浮点数语法。不过问题现在已经解决了。  详情 回复 发表于 2022-6-11 14:26
 
 
 

回复

7244

帖子

2

TA的资源

版主

板凳
 

【如果将相除得到的整数c】乘以10的话是10。左移一位是2。

此帖出自51单片机论坛

点评

如果是两个二进制数相除后得到商的小数点后一位的话,把得到的商右移再对10求余可以吗?右移几位呢?  详情 回复 发表于 2022-6-7 09:44
 
 
 

回复

7044

帖子

11

TA的资源

版主

4
 
看你是定义a b是什么类型如果是uint8_t c=a/b 即c = 1 左移一位 c = 2
此帖出自51单片机论坛
 
 
 

回复

853

帖子

3

TA的资源

版主

5
 
wangerxian 发表于 2022-6-6 19:19 【如果将相除得到的整数c】乘以10的话是10。左移一位是2。

如果是两个二进制数相除后得到商的小数点后一位的话,把得到的商右移再对10求余可以吗?右移几位呢?

此帖出自51单片机论坛

点评

而且求余也只能是整数才能求余。  详情 回复 发表于 2022-6-7 13:03
浮点类型不能左右移哦!  详情 回复 发表于 2022-6-7 13:03
 
 
 

回复

143

帖子

1

TA的资源

一粒金砂(高级)

6
 

不知道你要干什么,二进制除法 3/2, 假定4bit, 0011/0010, 商为0001,余数0001

此帖出自51单片机论坛

点评

写Verilog的时候碰到的,Verilog不能表示小数,所以问一下c=3/2后,c是不是直接变成整数1了,是的话就取不到小数部分了,要另外想算法   详情 回复 发表于 2022-6-11 14:21
 
 
 

回复

1800

帖子

0

TA的资源

五彩晶圆(初级)

7
 

有个做法,你想取的一位小数,可以在做除法前先把除数*10,相当于存的变量是实际值的10倍,做显示或者其他运算的时候再针对处理就好了

a*10/b=15

此帖出自51单片机论坛
 
 
 

回复

1800

帖子

0

TA的资源

五彩晶圆(初级)

8
 

另外求余数可以直接用运算符%:3%2=1

此帖出自51单片机论坛
 
 
 

回复

7244

帖子

2

TA的资源

版主

9
 
1nnocent 发表于 2022-6-7 09:44 如果是两个二进制数相除后得到商的小数点后一位的话,把得到的商右移再对10求余可以吗?右移几位呢?

浮点类型不能左右移哦!

此帖出自51单片机论坛
 
 
 

回复

7244

帖子

2

TA的资源

版主

10
 
1nnocent 发表于 2022-6-7 09:44 如果是两个二进制数相除后得到商的小数点后一位的话,把得到的商右移再对10求余可以吗?右移几位呢?

而且求余也只能是整数才能求余。

此帖出自51单片机论坛
 
 
 

回复

7671

帖子

2

TA的资源

五彩晶圆(高级)

11
 

实测一下看看

此帖出自51单片机论坛

点评

问题已经解决了    详情 回复 发表于 2022-6-11 14:22
 
个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 

回复

6107

帖子

4

TA的资源

版主

12
 

是2

c =a/b;  //==> c=1

c <<=1;// ==>c=2

 

如果你想要得到1.5的实际数据(整数没法表示,除非用双精度,浮点);

就是直接用浮点 a,b,c都用浮点,结论就是1.5

如果你想得到一个类似15的数。那就可以:

a =a*10;

c =a/b;

这个时候c就是15

 

如果你想精度更高点

可以a*100  a*1000不过要考虑不要溢出。

 

 

此帖出自51单片机论坛

点评

用的是Verilog语言,没有浮点数的语法  详情 回复 发表于 2022-6-11 14:22
 
 
 

回复

1662

帖子

0

TA的资源

五彩晶圆(初级)

13
 

看其他人解释应该是×2

此帖出自51单片机论坛
 
 
 

回复

853

帖子

3

TA的资源

版主

14
 
jimtien 发表于 2022-6-7 11:17 不知道你要干什么,二进制除法 3/2, 假定4bit, 0011/0010, 商为0001,余数0001

写Verilog的时候碰到的,Verilog不能表示小数,所以问一下c=3/2后,c是不是直接变成整数1了,是的话就取不到小数部分了,要另外想算法 

此帖出自51单片机论坛
 
 
 

回复

853

帖子

3

TA的资源

版主

15
 
damiaa 发表于 2022-6-8 09:05 是2 c =a/b;  //==> c=1 c <<=1;// ==>c=2   如果你想要得到1.5的实际数据 ...

用的是Verilog语言,没有浮点数的语法

此帖出自51单片机论坛
 
 
 

回复

853

帖子

3

TA的资源

版主

16
 

问题已经解决了

 

此帖出自51单片机论坛
 
 
 

回复

853

帖子

3

TA的资源

版主

17
 
maychang 发表于 2022-6-6 18:58 『如果将相除得到的整数c,向左移一位的话,c的值为10还是15?』 计算机使用二进制。左移一位是移二进制 ...

『如果将相除得到的整数c,向左移一位的话,c的值为10还是15?』

我这里描述有点问题,不是左移,是商c=3/2, 得到的c*10,能不能得到15,因为使用的语言是Verilog,没有浮点数语法。不过问题现在已经解决了。

此帖出自51单片机论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表