# Isolate Digits in a number

조회 수: 2 (최근 30일)
Raviteja 2011년 4월 7일
Take c input as
c= 0010100101100
Note: Please don't take c as char
isolate each digit into index of "nary"
i.e.,
>> naray =
0 0 1 0 1 0 0 1 0 1 1 0 0
i.e.,
nary(1)=0
nary(2)=0
nary(3)=1
nary(4)=0
nary(5)=1
nary(6)=0
nary(7)=0
nary(8)=1
nary(9)=0
nary(10)=1
nary(11)=1
nary(12)=0
nary(13)=0
##### 댓글 수: 1이전 댓글 -1개 표시이전 댓글 -1개 숨기기
David Young 2011년 4월 7일
Could you say why you want to do this, please? I ask because it looks a bit like it could be a homework problem. Also, is it assumed that nary is to have 13 elements? The number of leading zeros in 0010100101100 is lost, of course, so there's no information in c about how many leading zeros are to be stored in nary.

댓글을 달려면 로그인하십시오.

### 채택된 답변

Matt Fig 2011년 4월 7일
If c is not a char, then what is it? How could you even enter c in MATLAB if it is not a char? You will lose the leading zeros if c is not a char.
>> c = 0010100101100
c =
10100101100

댓글을 달려면 로그인하십시오.

### 추가 답변 (3개)

Paulo Silva 2011년 4월 7일
So if c isn't char it could be a vector:
nary='0010100101100' - '0'; %create the vector with the data provided
%now you can call each value from 1 until 13
nary(1)
nary(2)
nary(3)
nary(4)
nary(5)
nary(6)
nary(7)
nary(8)
nary(9)
nary(10)
nary(11)
nary(12)
nary(13)
##### 댓글 수: 1이전 댓글 -1개 표시이전 댓글 -1개 숨기기
Raviteja 2011년 4월 7일

댓글을 달려면 로그인하십시오.

David Young 2011년 4월 7일
Well, since Matt's answer has been accepted (!), I guess I might as well offer mine, for non-char input:
nary = floor(c*10.^(-13:0))-10*floor(c*10.^(-14:-1));
##### 댓글 수: 2없음 표시없음 숨기기
Walter Roberson 2011년 4월 7일
Ah, but it doesn't handle negative binary numbers ;-)
If you change the floor() to fix() then for negative c, each of the 1 values will come out negative, which would arguably be a fair solution.
David Young 2011년 4월 11일
Indeed!

댓글을 달려면 로그인하십시오.

Walter Roberson 2011년 4월 7일
nary = sprintf('%d',c) - '0';
Subject, though, to the problems the others noted about losing leading zeros.
Note: this solution is also not valid if there are more than 53 bits from the first 1 in the number.

댓글을 달려면 로그인하십시오.

### 카테고리

Help CenterFile Exchange에서 Operators and Elementary Operations에 대해 자세히 알아보기

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by