两个整数a=3,b=2;
两数相除得整数 c=a/b(c得值为整数1,实际应为1.5),
如果将相除得到的整数c,向左移一位的话,c的值为10还是15?
【如果将相除得到的整数c】乘以10的话是10。左移一位是2。
引用: wangerxian 发表于 2022-6-6 19:19 【如果将相除得到的整数c】乘以10的话是10。左移一位是2。
如果是两个二进制数相除后得到商的小数点后一位的话,把得到的商右移再对10求余可以吗?右移几位呢?
引用: 1nnocent 发表于 2022-6-7 09:44 如果是两个二进制数相除后得到商的小数点后一位的话,把得到的商右移再对10求余可以吗?右移几位呢?
浮点类型不能左右移哦!
引用: 1nnocent 发表于 2022-6-7 09:44 如果是两个二进制数相除后得到商的小数点后一位的话,把得到的商右移再对10求余可以吗?右移几位呢?
而且求余也只能是整数才能求余。
是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不过要考虑不要溢出。
引用: jimtien 发表于 2022-6-7 11:17 不知道你要干什么,二进制除法 3/2, 假定4bit, 0011/0010, 商为0001,余数0001
写Verilog的时候碰到的,Verilog不能表示小数,所以问一下c=3/2后,c是不是直接变成整数1了,是的话就取不到小数部分了,要另外想算法
引用: damiaa 发表于 2022-6-8 09:05 是2 c =a/b; //==> c=1 c <<=1;// ==>c=2 如果你想要得到1.5的实际数据 ...
用的是Verilog语言,没有浮点数的语法
引用: maychang 发表于 2022-6-6 18:58 『如果将相除得到的整数c,向左移一位的话,c的值为10还是15?』 计算机使用二进制。左移一位是移二进制 ...
『如果将相除得到的整数c,向左移一位的话,c的值为10还是15?』
我这里描述有点问题,不是左移,是商c=3/2, 得到的c*10,能不能得到15,因为使用的语言是Verilog,没有浮点数语法。不过问题现在已经解决了。