Ex 2_25 n位十进制整数转换为二进制形式..._第四次作业

(a)   当n=1时,(10)d=(1010)b

当n=2时,(100)d=(10)d x (10)d=(1010)b x (1010)b

当n=4时,(10000)d=(100)d x (100)d=(1010)b x (1010)b x (1010)b x (1010)b

因此z=pwr2bin(n/2)

T(n)=T(n/2)+(cn/2)log23=>T(n)=O(nlog23)

(b)

若十进制整数x的位数等于1,则返回binary[x]

假设位数为n(n>1且n为2的幂),则把x平均分成两部分xL和xR,每一部分为n/2位

则x=10n/2*xL+xR=pwr2bin(n/2)*dec2bin(xL)+dec2bin(xR)

=fastMultiply(pwr2bin(n/2),dec2bin(xL))+dec2bin(xR)

运行时间为

T(n)=2T(n)+O(nlog23)=>T(n)=O(nlog23)

时间: 2024-08-24 13:49:31

Ex 2_25 n位十进制整数转换为二进制形式..._第四次作业的相关文章

判断给定十进制整数的二进制形式中含有几个1

两种判断一个给定整数的二进制形式中含有几个1的简单方法: 主要思想是通过按位与(&)运算和位移运算(<< >>)实现 1 unsigned int_number( int n) 2 { 3 if (n < 0) 4 return; 5 unsigned count = 0; 6 while (n != 0) 7 { 8 if ((n & 1) != 0) 9 ++count; 10 n >>= 1; 11 } 12 return count; 13

十进制负数转换为二进制、八进制、十六进制的知识分享

这篇文章主要介绍了十进制负数转换为二进制.八进制.十六进制的知识分享,需要的朋友可以参考下 程序猿们或许对二进制都不陌生,二进制是计算技术中广泛采用的一种数制.二进制数据是用0和1两个数码来表示的数.但是很多人都会将二进制转换成整数,但是如何用二进制表示负数呢?有的人会说,在二进制前面加个负数符合.而计算机只能认识0 和 1,又怎么去加个额外的负数符号呢?于是我们就需要用0和1来表示负数.如果想要弄懂这个,我们需要先了解什么是二进制原码. 原码是什么 原码(true form)是一种计算机中对数

把十进制整数转换为r(r=2)进制输出(顺序栈实现)

上周的第二个作业补上~~ 上周的要求: 1.给出顺序栈的存储结构定义. 2.完成顺序栈的基本操作函数. 1)      初始化顺序栈 2)      实现入栈和出栈操作 3)      实现取栈顶元素和判空操作 把十进制整数转换为r(r=2)进制输出 3.编写主函数实现基本操作函数功能,并设置测试数据,测试合法和非法数据的输出结果. 4.程序调试运行并保存输出结果. 5.整理并提交实验作业. 1 #include <cstdio> 2 #include <cstring> 3 #d

java语言将任意一个十进制数数字转换为二进制形式,并输出转换后的结果

1 package com.llh.demo; 2 3 import java.util.Scanner; 4 5 /** 6 * 7 * @author llh 8 * 9 */ 10 public class Test { 11 /* 12 * 将任意一个十进制数数字转换为二进制形式,并输出转换后的结果(使用数组存储) 13 */ 14 public static void main(String[] args) { 15 Scanner sc = new Scanner(System.in

编写一个算法,将非负的十进制整数转换为其他进制的数输出,10及其以上的数字从‘A’开始的字母表示

编写一个算法,将非负的十进制整数转换为其他进制的数输出,10及其以上的数字从‘A’开始的字母表示. 要求: 1) 采用顺序栈实现算法: 2)从键盘输入一个十进制的数,输出相应的八进制数和十六进制数. #include "stdio.h" #define StackSize 100 typedef char ElemType; typedef struct { ElemType data[StackSize]; int top; }SqStack; int trans(int d, in

将一个十进制数转为二进制形式并判断它是否是2的n次幂

java提供了十进制转化为二进制.十六进制.八进制的函数:在java.lang.Integer这个API包中,转换函数如下 public static String toBinaryString(int i) public static String toHexString(int i) public static String toOctalString(int i) 这3个函数都可以将十进制的整数转换成二.一六.八进制数,不过转换后的结果都是字符串的形式. 在这里介绍下转换为二进制的情况.

C#Winform基础 十进制整数转换为32位有符号二进制数

镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ 1 UI 2 code 1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using S

位操作 + 数某十进制整数的二进制中的1的个数

1 #include <stdio.h> 2 int getbit( int a,int i) 3 { 4 return a&(1<<i);// 只取数字a第i位上的值 5 } 6 int main() 7 { 8 int n; 9 while(scanf("%d",&n)!=EOF) 10 { 11 int i; 12 int count=0; 13 int tem=-1; 14 for(i=0;i<32;i++)//int 32位 15

T-SQL编写程序,将十进制数值转换为二进制字符串后输出

declare @ch nchar(10),@n int,@a int set @n=20 set @ch='' print cast(@n as varchar(5))+'的二进制为:' while @n<>0 begin set @[email protected]%2 set @[email protected]/2 set @ch=char([email protected])[email protected] end print @ch 结果为: 20的二进制为: 10100