声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2734|回复: 9

[编程技巧] 请教如何进行二进制和十进制的转换

[复制链接]
发表于 2008-1-17 15:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
怎样从一个01一维数组的元素所组成的二进制数计算出其对应的十进制数?
如 a = [1 0 1 0 1 0 1 0],其中的元素组成的二进制数表示十进制数170
     b = [1 1 1 1 0 0 0 0],其中的元素组成的二进制数表示十进制数240

[ 本帖最后由 eight 于 2008-1-22 19:38 编辑 ]
回复
分享到:

使用道具 举报

发表于 2008-1-17 15:52 | 显示全部楼层

回复 楼主 的帖子

那你是怎么算出a=170的呢
 楼主| 发表于 2008-1-17 16:42 | 显示全部楼层
我自己手工计算的,现在我需要编程实现
发表于 2008-1-17 17:46 | 显示全部楼层

回复 3楼 的帖子

手工算也有一定的算法吧
你就按照算法编程
 楼主| 发表于 2008-1-17 18:05 | 显示全部楼层
用计算器算的
发表于 2008-1-17 18:10 | 显示全部楼层

回复 5楼 的帖子

找一本计算机类的基础书
估计都有
 楼主| 发表于 2008-1-17 18:13 | 显示全部楼层
我主要是想知道怎么从数组a = [1 0 1 0 1 0 1 0]得到一个二进制数10101010
从b = [1 1 1 1 0 0 0 0]得到二进制数11110000
发表于 2008-1-17 18:15 | 显示全部楼层
原帖由 sherri 于 2008-1-17 15:45 发表
怎样从一个01一维数组的元素所组成的二进制数计算出其对应的十进制数?
如 a = [1 0 1 0 1 0 1 0],其中的元素组成的二进制数表示十进制数170
     b = [1 1 1 1 0 0 0 0],其中的元素组成的二进制数表示十进制数2 ...

手工算太麻烦了,可以用下边的方法

  1. a = [1 0 1 0 1 0 1 0];
  2. b = sprintf('%d',a);
  3. bin2dec(b)
  4. ans =
  5.    170
复制代码
虽然编程语言不同,会有不同的语法规则。但是一些基本的规则都是相同的,比如二进制用bin,十进制用dec,十六进制用hex等。而在matlab里转换有个特点,就是中间用2(two&to):im2bw,rgb2gray,num2str等等很多类似这样的函数。因此多试下就知道了,我也只凑巧知道有bin2dec函数。以前没用过的:

  1. >> bin2dec
  2. ??? Input argument "s" is undefined.
  3. Error in ==> bin2dec at 22
  4. if iscellstr(s)     %这个错误提示,至少说明存在此函数
  5. >> help bin2dec
  6. BIN2DEC Convert binary string to decimal integer.
  7.     X = BIN2DEC(B) interprets the binary string B and returns in X the
  8.     equivalent decimal number.  

  9.     If B is a character array, or a cell array of strings, each row is
  10.     interpreted as a binary string.
  11.     Embedded, significant spaces are removed. Leading spaces are converted to
  12.     zeros.

  13.     Example
  14.         bin2dec('010111') returns 23
  15.         bin2dec('010 111') also returns 23
  16.         bin2dec(' 010111') also returns 23

  17.     See also dec2bin, hex2dec, base2dec.
复制代码
或者搜索下应该也可以解决,之所以啰唆这么多,是想让告诉大家:多尝试,多搜索。matlab函数很多,谁也不可能记得很全,这就需要根据一定的经验去尝试。

[ 本帖最后由 花如月 于 2008-1-17 18:18 编辑 ]

评分

2

查看全部评分

 楼主| 发表于 2008-1-17 18:31 | 显示全部楼层
非常感谢,一定好好学习!
发表于 2008-1-19 11:52 | 显示全部楼层
自己写程序也很好实现啊

a = [1 0 1 0 1 0 1 0];b=0;
for ii=1:length(a)
    b=b+a(ii)*2^(length(a)-ii);
end

就是一个二进制转化啊

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-9-23 15:27 , Processed in 0.060157 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表