きれいなコードを書きませう
■ このスレッドは過去ログ倉庫に格納されています
0001お題1
NGNG0030よっぱらいなてんさいぷろぐらむぁ(偽)
NGNGああ変なことかいてるなー
一応修正(よっぱらいだからまだ間違えてるかも)
つーか本当に寝る
*/
void OutBit(unsigned int uDec, FILE *Out)
{
unsigned int uBit;
uBit = 1U << ((sizeof(uBit) * 8) - 1);
do{
fputc((uBit & uDec) ? '1' : '0', Out);
}while((uBit >> 1))
}
0031デフォルトの名無しさん
NGNGただし、正の整数のみ対応。
マイナスは・・・気にするな(笑)
#include <stdio.h>
#include <string.h>
#define N 2 // N (<10) 進数を決める
int main(void)
{
char n[20];
int x, i=0;
printf("Input x > ");
scanf("%d",&x);
if(x < 0)
return(1); // マイナスは無視
while(x != 0) {
n[i] = (x%N)+48; // ASCII コードに対応させる
x /= N;
i++;
}
for(i--; i >= 0; i--)
printf("%c",n[i]);
printf("\n");
return(0);
}
0032デフォルトの名無しさん
NGNG同じ事だけど
n /= 2よりも
n >>= 1のほうが意味も分かりやすいし
きれいなコードって意味ではいいんじゃないかな。
重箱の隅をつっつくようなレスでスマソ。
0033デフォルトの名無しさん
NGNGおお、スゲ。
っていうか、このお題でこれ以外の回答してる奴は逝ってよしだな。
現場でこれ以外のコード書いたら保守大変なだけだぞ
0034よっぱらいなてんさいぷろぐらむぁ(偽)
NGNG>>32
みて気が付いたけど
>>30は
((uBit >> 1)) -> ((uBit >>= 1)) だね欝だ・・・
>>33
つーかこれって宿題お勉強スレでしょ?
0035よっぱらいなてんさいぷろぐらむぁ(偽)
NGNG0036デフォルトの名無しさん
NGNG0037デフォルトの名無しさん
NGNG>入力された値を2進数で表示しなさい。
条件はコレだけじゃん。
これ以上の要求は皆無
0038デフォルトの名無しさん
NGNG0039デフォルトの名無しさん
NGNG寒い。
0040みさきち
NGNG0042知ったか君
NGNG10進数->10増えるごとに桁が増える
2進数->2増えるごとに...
1進数->1増えるごとに...
だよ。
0043みさきち
NGNG0044デフォルトの名無しさん
NGNGですから、1増えるごとに桁が増えていくんですけど、
それをどうやって表すんですか?
2進数の時点で1と0しか使われていないんですから、
1進数になったら・・・。
0046デフォルトの名無しさん
NGNG0047デフォルトの名無しさん
NGNG0の発見に続く大発見!
1進数を発見してくれ!
0048デフォルトの名無しさん
NGNG発見したはよいが、つかいもんにならん。
0と0以外しか区別できん。
#ん?Boolean?
0049デフォルトの名無しさん
NGNGなんてボケは置いておいて。
ブール型変数だって結局のところ0と1、
もしくは true false なんでしょ?
だったら2進数みたいなもんじゃん。
0050デフォルトの名無しさん
NGNG1進数だと、全ケタを使ってソレだけしか表現できない
んでわないかなと…というのが前述の主旨。
0051デフォルトの名無しさん
NGNG無限回繰り上がる?
>>41-42みたいになるんじゃないのか?
0052デフォルトの名無しさん
NGNGそれが0と1で構成されているわけでしょ?
んで、1進数いうたら1増えたら桁があがるわけじゃん。
やっぱりずっと0じゃん。
0053デフォルトの名無しさん
NGNGだから、1進数だと1^m=1で、1種類の数しか表現できない。
0054デフォルトの名無しさん
NGNG0055デフォルトの名無しさん
NGNGまあ、それはそうなんだけど…。
>>41
は惜しいなあ。その表記法で0と1さえ区別できれば。
0057デフォルトの名無しさん
NGNG表示できるぞ?
0058知ったか君
NGNGそういうものか…
>>41の訂正(?)なんだけど
1->0
6->000000
じゃなくって
0->0
1->00
6->0000000
の間違いですね。多分。
いや、どっちにせよ間違ってる(ないのなら)んだろうけど。
0059デフォルトの名無しさん
NGNG> 0->0
> 1->00
> 6->0000000
むしろ、0のとき何も書かないって方が徹底している。
0 -> ''
1 -> '0'
2 -> '00'
:
これで小数とか考えなければ表現法としてはありうるけど、
結局は'0'の個数で自然数を表しているに過ぎないわけ。
0060デフォルトの名無しさん
NGNG0061知ったか君
NGNG> むしろ、0のとき何も書かないって方が徹底している。
> で小数とか考えなければ表現法としてはありうるけど、
> は'0'の個数で自然数を表しているに過ぎないわけ。
二進数や十進数とか他のn進数の法則を自然に一進数に適用すれば
あなたの言うようにはならないと思うよ。
0063デフォルトの名無しさん
NGNG0064デフォルトの名無しさん
NGNGm^n 通りの数が表現できるので、1進数だと何桁使っても
1 つの数(0ね)しか表現できない。
一進数には、0 という一つの数字しか存在し得ないってこと。
あまり実用的ではないと思う。
数字を表す記号の数=基数じゃなくても良いなら、ローマ数字
みたいな位取りの概念の無い記数法として存在するけど。
0065知ったか君
NGNGまあ確かに
00も000も00000000000000も
1でなく2でもなく13でもなく0だよな(ワラ
0066デフォルトの名無しさん
NGNGならん。
>>52
>んで、1進数いうたら1増えたら桁があがるわけじゃん。
>やっぱりずっと0じゃん。
そう。「ずっと」0なの。0の数は無限個。
1増えて桁が繰り上がると、その次の桁が1(2以上進数)になるけど、
するとその桁がまた繰り上がりしないとならん。
以下、無限繰り返し。だべ?
0067デフォルトの名無しさん
NGNG0068デフォルトの名無しさん
NGNG> 二進数や十進数とか他のn進数の法則を自然に一進数に適用すれば
> あなたの言うようにはならないと思うよ。
自然な拡張では一進法は0以外表せないのだから、人工的に回避するしかないということ。
人工的ならば利便性から何種類も考えられるわけだ。
たとえば0で表すのをやめて1を用いるとか…。そうすると>>59と似たり寄ったりだが、
0 -> ''
1 -> '1'
2 -> '11'
:
ってな具合だ。とにかく一般のm進法にさらに新しい約束事を取り入れなければ
うまくいかないだろう。
0069デフォルトの名無しさん
NGNGつまり、0が続く数値というのは、無いということで、
1進数は無い!んじゃないの?
0070デフォルトの名無しさん
NGNGとっくにそのような結論に至ってると思われ。
0072デフォルトの名無しさん
NGNG1 -> '1'
2 -> '11'
ではDaMe?
0074デフォルトの名無しさん
NGNGm進法ならばm種類の記号しか用いないのでわ?
0075デフォルトの名無しさん
NGNG0076デフォルトの名無しさん
NGNGあのぉ、0進数って矛盾してません?
だって、進数という部分集合に入りませんよ?
0077デフォルトの名無しさん
NGNG一般論で言えばそうだけど、
理論的には「記号の数 ≧ 位取りの基数」なら良いの。
たとえば、ソロバンは10進数だけど記号は11種類ある。
で、こういう、>>68みたいな「記号の多い1進数」の
例がローマ数字だってことも激しく既出。
>>75
-1 進数は (0,1) の二個の記号を 0 と 1 の意味で用いれば、
任意の整数を表現でき、i進数では真意の整複素数を表現できる。
0078デフォルトの名無しさん
NGNG古いソロバンね。
0079デフォルトの名無しさん
NGNG> 任意の整数を表現でき
意味不明
0080デフォルトの名無しさん
NGNG0 -> 0
1 -> 1
10 -> -1
11 -> 0
100 -> 1
101 -> 2
110 -> 0
111 -> 1
1000 -> -1
1001 -> 0
1010 -> -2
..
てな感じで、位取りが -1の場合、
0 に相当する数字と、1 に相当する数字があれば、
整数全てが表現できる、ってことだよ。
表現力が無くて悪かったよ。
■ このスレッドは過去ログ倉庫に格納されています