![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_01.png?8acaa2e)
https://oshiete.goo.ne.jp/qa/8940272.html
以上のアドレス先のプログラムのコメントに
※「gyou[1024];=1 行のバイト数がそれ以下であれば問題ない」
と書き込んでしまいました。
すると!プログラムは、行数を計算するプログラムですが、
そのプログラムの行数は22行ありますが、その中の一番多い行の文字数は半角40文字あります。
40文字×1バイト=5120ビットになります。
なので
上記の※は最大1024ビットですので、対応できない計算になると思います。
しかし、プログラムはちゃんと動いていますので!私のどこが間違っている
か知りたいです。
よろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
えーと、そもそもバイトとビットの理解自体が曖昧みたいですが・・・σ(^_^;)
「1バイト = 8ビット」と言うのは固定のお約束です
んで、8ビットというのは2進数で数値を表すってことです
つまり8桁の2進数 00000000 〜 11111111
の256パターンで0から255の値を表現できます
これは C言語ファミリーでは unsigned char と宣言したときで
char と宣言すると符号付きとなり1ビットを符号状態に使うため
7桁の2進数 0000000 〜 1111111
の128パターン x 符号状態 でー127から+128まで表現できるわけです
ちなみになんでー127って+より1少ないかといえば0があるから
ここは理解できてますか?
で肝心の配列ですが・・・
gyou char[1024];
これの意味は
「符号付き1バイトが1024個並んだ領域を確保し、先頭をgyouと言う名前で参照します」
ので gyou[0] だろうが gyou[100] だろうが1バイトなのです
添字は0から始まるのでこの場合のMAXは1023ですな
0 1 2 3・・・・・・・・・・1023
↓↓↓↓・・・・・・・・・・↓
□□□□・・・・・□□□□□□
↑
gyou
)最後に個人的な思い込みの助言
どのような参考書をお使いか知りませんが
C言語を勉強するなら1度はK&Rの本を読んどくべきかと
全ての原点はそこにあります
ご回答いろいろ誠にありがとうございました。
以下は理解できます。
「1バイト = 8ビット」と言うのは固定のお約束です
んで、8ビットというのは2進数で数値を表すってことです
つまり8桁の2進数 00000000 〜 11111111
の256パターンで0から255の値を表現できます
これは C言語ファミリーでは unsigned char と宣言したときで
と
ちなみになんでー127って+より1少ないかといえば0があるから
ここは理解できてますか?
他 まだ理解できていませんが、何回か読みたいと思います。
No.4
- 回答日時:
もし本当に
「半角1文字は=1バイト=0~127ビット」
なんて書いてあるような参考書なら捨ててしまった方がいいです. 本当にそんな風に書いてあるとは思えないけどね.
以下蛇足気味につっこむ.
1バイト = 8ビット
は C では通用しないです>#2. あと, ふつうは -127~128 じゃなくって -128~127 だね.
ただし規格で保証するのは (#3 でもいわれているように符号の有無が処理系に依存するため) 0 から 127 までだし, signed char でも保証されるのは -127~127 だ.
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_02.png?8acaa2e)
No.3
- 回答日時:
少々補足です。
Cの規格では、
char
unsigned char (符号無しを明示)
signed char (符合付きを明示)
は、とりあえず、「別々の型」として取り扱われます。
そういうわけで、char が、符合付きとして扱われるか、符号無しとして扱われるかは、「処理系定義」となっていて、そのコンパイラ(と、場合によっては、コンパイルオプション)しだいということになります。
No.1
- 回答日時:
参考書の配列のところを10回くらい読んでください。
どこかに []の中の数字が「ビット数」だと書いてありましたか?
ご回答ありがとうございます。
ご指摘いただいた、そんな視点で読みました。
気づくと簡単なことですが、なかなか気づかない場合も多々ございまして_ _
参考書には1文字単位で書かれていますので
「半角1文字は=1バイト=0~127ビット」
なので
[1024]×0~127ビット=※0~130048ビットか0~131072ビットなのか?
細かな数字はあてにはなりませんが! だいたいはあたってるとは存じます。
なので、
40文字×1バイト=5120ビットは誤り
正解40文字×1バイト=40バイトで[1024]-40=984文字の余裕はあります。
間違っていましたらすみません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# [C言語] コメント文字列を無視して、数値データを読み込むプログラム部分について 5 2022/10/05 11:03
- C言語・C++・C# 至急お願いします。C言語で.imgのファイルを読み込んで1バイトづつ出力するプログラムを作りたいので 3 2023/01/16 22:49
- C言語・C++・C# c言語 コマンドライン引数 4 2023/02/09 18:47
- Visual Basic(VBA) VBAにてメール作成した際、一部指定箇所のみ赤文字にしたいです。 下記の内容ですと作成されたメール本 1 2022/04/27 13:31
- C言語・C++・C# C言語 3 2022/10/04 15:07
- Perl perlについての質問 2 2022/10/17 15:25
- PHP 空文字 "" ですが 空文字の意味を教えてください。 3 2022/08/05 03:51
- PHP ここで言う空文字の意味とは? 1 2022/08/05 16:27
- Ruby VBA 2 2023/01/14 14:14
- その他(プログラミング・Web制作) VBA 1 2023/01/19 16:19
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「1TB」のHDDに日本語は何字入...
-
char str[256]の256の意味は?
-
ピクセル,dpiから容量(バイト...
-
VBAでUnicodeしか存在しない文...
-
UTF-8コードの正規表現
-
バイト列とバイナリ列の違いが...
-
バイナリとBCDコード
-
Console.writeLineで文字化け
-
UTF-8で5~6バイトになる文字コ...
-
日付時刻を4バイトに
-
ビットスワップとバイトスワッ...
-
sizeof(long), sizeof(short)...
-
iconv変換後のサイズについて
-
memcmp バイナリデータの比較方法
-
「C#」言語のトレースについて…...
-
サービス名の命名規則ってあり...
-
※「gyou[1024];=1 行のバイト数...
-
デコメールや写真添付(本文中...
-
UNICODE対応にするメリットは?
-
コピー先に対して項目名が長過...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
10Mバイトて文字数に すると何...
-
UTF-8で5~6バイトになる文字コ...
-
char str[256]の256の意味は?
-
エクセルシート名の制限を変更...
-
COBOLのCOMP形式について
-
「1TB」のHDDに日本語は何字入...
-
バイナリとBCDコード
-
ビットスワップとバイトスワッ...
-
ピクセル,dpiから容量(バイト...
-
バイト列とバイナリ列の違いが...
-
SQLで1バイト、2バイト混在...
-
【VB2005】テキストボックス内...
-
Javaで日本語1文字のバイト数
-
1KBが1024byteな理由
-
3バイト文字(UTF-8)をprintfで...
-
C++ Builderで文字列をバイトに...
-
機種依存文字をチェックしたい。
-
半角、全角の判別方法
-
文字コードの利点・欠点について
-
64bit対応
おすすめ情報
分かりやすいご回答ありがとうございました。
K&Rの本 以下の本であれば、以前アマゾン.comで中古本をかなり安くご購入いたしました。
間違いございませんでしょうか!? 本の内用は最初からかなりハイレベルですが!たまに読んでいます。
http://www.amazon.co.jp/%E3%83%97%E3%83%AD%E3%82 …