十进制转二进制,短除法与位运算两种方法

短除法:比如十进制整数19

19/2=9……1

9/2=4……1

4/2=2……0

2/2=1……0

所以最后计算的结果就是10011

短除法代码:

#include <iostream>
using namespace std;
int main()
{
    int n;
    while(cin>>n)
    {
        int cnt=0;
        while(n!=1)    //当除到结果为1的时候,停止循环
        {
            if(n%2==1)   //余数为1,则计数加1。
                {
                    cnt++;
                    n=n/2;
                }
            else
                n=n/2;
        }
        cnt++;
        cout << cnt << endl;
    }
    return 0;
}


位运算的方法,输入的正整数每次与自己减1之后的数做位与(&)运算,每次运算就会减少一个1。

位运算代码:


                
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
下面是一个用 VHDL 实现十进制转二进制的例子: ``` library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; entity dec2bin is port ( dec: in integer range 0 to 255; -- 十进制数,范围为 0 到 255 bin: out std_logic_vector(7 downto 0) -- 8 位二进制数 ); end entity dec2bin; architecture rtl of dec2bin is begin process(dec) variable temp_dec: integer range 0 to 255 := dec; variable temp_bin: std_logic_vector(7 downto 0); begin for i in 0 to 7 loop temp_bin(i) := std_logic(temp_dec mod 2); -- 取余数,换为 std_logic 类型 temp_dec := temp_dec / 2; -- 除以 2 end loop; bin <= temp_bin; -- 将 std_logic_vector 赋值给输出端口 bin end process; end architecture rtl; ``` 在上面的例子中,我们定义了一个名为 dec2bin 的实体,它有一个输入端口 dec 和一个输出端口 bin。输入端口 dec 是一个整数类型,表示一个十进制数,范围为 0 到 255。输出端口 bin 是一个 8 位的 std_logic_vector,表示该十进制数对应的二进制数。 在架构 rtl 中,我们定义了一个进程,它在输入端口 dec 发生变化时执行。在进程中,我们首先定义了一个 variable 类型的变量 temp_dec,它的范围和输入端口 dec 相同。然后,我们定义了一个 variable 类型的变量 temp_bin,它是一个 8 位的 std_logic_vector。在进程中,我们使用了一个 for 循环,将十进制换为二进制数。在循环中,我们首先取 temp_dec 除以 2 的余数,并将其换为 std_logic 类型,然后将 temp_dec 除以 2。最后,我们将 temp_bin 赋值给输出端口 bin。 使用上述代码,你可以在 Quartus II 中实现十进制转二进制的功能。请注意,这个例子中的除法运算使用了 VHDL 内置的除法运算符 /,它可以执行整数除法运算。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值