C言語におけるビットシフト演算子と符号付き数値表現
符号付き整数の内部表現
コンピュータ内部で整数を表現する方法にはいくつかの方式があります。特にC言語では、整数は補数形式(2の補数)として保存されます。以下に3つの表現方式を説明します:
原符号(Sign-Magnitude): 最上位ビット(MSB)が符号を表し、0は正、1は負。
1の補数: 負数は原符号の数値部を反転したもの。
2の補数: 1の補数に1を加えた形式。現在のコ ...
5月17日 23:20 投稿
C言語基礎ガイド:データ型から制御構文まで
データ型とC言語
基数の表示
// 10進数、8進数、16進数で値256を表示
#include <stdio.h>
int main(void) {
int val = 256;
printf("dec=%d; oct=%o; hex=%x\n", val, val, val);
printf("dec=%d; oct=%#o; hex=%#x\n", val, val, val);
return 0;
}
10進数は%d、8進数は%o、16進数は%xで表示します。接頭辞(0, 0x)を表示するには%# ...
5月17日 22:27 投稿
C言語基本構文の実践:入出力制御と数学演算
ループ制御による複数行・列のパターン描画
繰り返し処理を活用することで、同じ図形を縦方向に積層したり、横方向に並列配置したりすることができます。以下の例では、for文のイテレーション制御を利用して文字列アートを出力しています。
#include <stdio.h>
int main(void) {
int counter;
/* 縦方向への連続出力 */
for (counter = 1; counter <= ...
5月17日 09:15 投稿
C言語におけるsignedキーワードの詳細解説
C言語では、整数型を符号付き(positive/negative/zeroを表現可能)または符号なし(non-negativeのみ)として扱うことができます。この区別には signed および unsigned キーワードが使用されます。
signed の役割
signed は整数型を明示的に符号付きとして宣言する修飾子です。C言語で利用可能な符号付き整数型は以下の4種類です:
signed char:1バイト(-128〜127 ...
5月17日 03:05 投稿
ヒープ構造の理解と実装:データ構造入門から実践まで
前書き
コンピュータサイエンスにおいて、ヒープ(Heap)は優先度付きキューの実装や効率的なソートアルゴリズム(ヒープソート)に使われる重要なデータ構造です。ヒープは完全二分木をベースにしており、配列による順序表現が可能で、メモリ効率と操作速度のバランスに優れています。
1. 木構造の基礎
1.1 木とは
木は非線形データ構造で、ノードの階層的集合です。根( ...
5月16日 12:26 投稿
C言語とWin32 APIで構築するコンソールスネークゲーム
開発の基盤となる技術要素
本プロジェクトでは、C言語の以下の機能を駆使して実装を行います。
構造体、列挙型、ポインタの活用
動的メモリ割り当てによる連結リストの構築
プリプロセッサディレクティブによるマクロ定義
Win32 APIを用いたコンソール画面の制御
コンソール画面の制御
Windowsのコマンドプロンプト上で動作するアプリケーションを作成するため、system ...
5月16日 01:27 投稿
C言語におけるデータのメモリ内表現
基本データ型とメモリサイズ
型説明
char文字型
short短整数型
int整数型
long長整数型
float単精度浮動小数点数
double倍精度浮動小数点数
整数型の分類
符号付きchar
符号なしchar
short
符号付きshort
符号なしshort
int
符号付きint
符号なしint
浮動小数点型の分類
float
double
整数のメモリ表現
符号表現
...
5月15日 11:23 投稿
シングルリンクリストの詳細な実装(C言語)
シングルリンクリストとは
シングルリンクリスト(Singly Linked List)は、データをノードとして格納し、各ノードが次のノードへのポインタを持つ線形データ構造です。配列や順序リスト(シーケンシャルリスト)と異なり、データの挿入・削除が柔軟で、必要に応じて動的にメモリを確保できます。
シングルリンクリストの構造
シングルリンクリストは、各ノードが2つの部 ...
5月15日 05:09 投稿
組込みシステムにおけるC言語の基本概念
関数とポインタの理解
関数の役割と種類
関数は特定の処理を再利用可能なコードブロックとして定義する仕組みです。コードの再利用性を高め、保守性を改善する目的で使用されます。
関数定義と呼び出しの基本
#include <stdio.h>
// 関数のプロトタイプ
void printBanner();
int main() {
// 3回関数を呼び出す
printBanner();
printBanner();
p ...
5月14日 19:59 投稿
マージソートのアルゴリズムとその実装
配列マージの基本
マージソートの核となる処理は、すでに整列済みの2つの部分配列を効率的に結合することです。たとえば、ar1[] = {1,2,3,4} と ar2[] = {3,4,5,6,7} の2つの配列があるとします。これらを効率的にマージするには、それぞれの配列にポインタを用意しておき、値を比較しながら新しい配列に格納していきます。
#include <stdio.h>
#include <stdli ...
5月14日 18:52 投稿