$ sudo -s
password
輸入User密碼後即可
標籤
二元樹
(1)
字串常數池
(1)
投資
(3)
每月損益
(37)
例外處理
(1)
泛型
(2)
股票
(15)
指標
(5)
英文
(8)
基本資料型別
(1)
期貨
(1)
程式交易
(10)
量化投資
(5)
亂亂寫
(3)
概念
(3)
資料結構
(3)
演算法
(3)
數學
(3)
轉型
(1)
AMA
(1)
ArrayList
(1)
assert
(1)
BeautifulSoup
(1)
C/C++
(8)
casting
(1)
ClassCastException
(1)
classpath
(1)
Collection
(4)
Comparable
(1)
comparTo()
(1)
constructor
(1)
database
(3)
Debian
(1)
Dropbox
(2)
EA
(2)
enum
(1)
equals()
(2)
exception
(3)
extends
(1)
ffmpeg
(1)
final
(1)
Git
(1)
HashMap
(1)
HashSet
(1)
hasNext()
(1)
HTS
(3)
instanceof
(1)
IS-A
(1)
Iterator
(1)
JAVA
(43)
length
(1)
Linux
(31)
List
(1)
Mac
(6)
Map
(1)
ML
(2)
MT4
(6)
MySQL
(2)
next()
(1)
NullPointerException
(1)
Number
(1)
Numpy
(2)
OpenCart
(1)
OpenCV
(3)
OSX
(1)
overloading
(1)
overriding
(3)
pandas
(2)
PHP
(8)
PriorityQueue
(1)
Python
(11)
Queue
(1)
random()
(1)
reverse()
(1)
Samba
(1)
SCJP
(21)
sqrt()
(1)
synchronized
(1)
talib
(1)
ufw
(1)
uTorrent
(1)
var-args
(2)
VHF
(1)
vim
(2)
Yhoo知識+
(4)
2012年7月6日 星期五
2012年2月8日 星期三
111107_指標變數
”當您要取得int變數的記憶體位址時,會使用int*來宣告指標,要取得double變數的記憶體位址時,會使用double*來宣告指標,這是因為它們在進行加減法運算時,所位移的單位並不相同”(出處)
原來是這樣啊...難怪我想說指標不是只是一個方向嗎,為什麼還要加上資料型態呢?原來如此,原來如此
原來是這樣啊...難怪我想說指標不是只是一個方向嗎,為什麼還要加上資料型態呢?原來如此,原來如此
2011年12月18日 星期日
2011年12月12日 星期一
每天一發現暫停,改為每日背單字
因為”我每天都要學到一件以前不知道的事”這個標籤太長了,所以就暫停了。(什麼爛理由)
其實是事情太多(這更爛),來不及每日發現事物,所以我要改!
改成”每日背英單”!不是被單喔!
一天要背幾個隨便,至少一個,大於等於1的意思。(知道啦!)
好,那就從明天...今天開始吧!Go~
其實是事情太多(這更爛),來不及每日發現事物,所以我要改!
改成”每日背英單”!不是被單喔!
一天要背幾個隨便,至少一個,大於等於1的意思。(知道啦!)
好,那就從
2011年11月26日 星期六
111105_C語言的資料型態
通常當我們宣告資料型態的時候,其實是在跟系統要記憶體。
例如說 int a = 1;
int 真正的意思是,給我4位元組我要放整數,也就是4*8=32個位元的空間長度。
而int能表現多少的數字呢,因為有32位元,然後一個位元能表現0跟1兩種,所以一共就是232種數字,但因為有正負號,所以是-2147483648 ~ 2147483647。
所以記各資料型態的大小的時候,只記位元組(byte),能表示多少種數字,就是2的該位元組*8。
以下都有unsigned的型態,unsigned的長度不變,表現數字皆為正數沒有負號。
int 4 bytes = 32 bits = 232
char 1 bytes = 8 bits = 28
short 2 bytes = 16 bits = 216
long 4 bytes = 32 bits = 232
long long 8 bytes = 64 bits = 264
浮點數皆有號:
float 4 bytes = 32 bits = 232
double 8 bytes = 64 bits = 264
參考自這裡
例如說 int a = 1;
int 真正的意思是,給我4位元組我要放整數,也就是4*8=32個位元的空間長度。
而int能表現多少的數字呢,因為有32位元,然後一個位元能表現0跟1兩種,所以一共就是232種數字,但因為有正負號,所以是-2147483648 ~ 2147483647。
所以記各資料型態的大小的時候,只記位元組(byte),能表示多少種數字,就是2的該位元組*8。
以下都有unsigned的型態,unsigned的長度不變,表現數字皆為正數沒有負號。
int 4 bytes = 32 bits = 232
char 1 bytes = 8 bits = 28
short 2 bytes = 16 bits = 216
long 4 bytes = 32 bits = 232
long long 8 bytes = 64 bits = 264
浮點數皆有號:
float 4 bytes = 32 bits = 232
double 8 bytes = 64 bits = 264
參考自這裡
111113_利用C為點陣圖做自動對比
#include <stdio.h>
#include <stdlib.h>
#define write_path "output.bmp" //輸出圖檔的檔名
void GCS(const char*, const char*); //global contrast stretching(全域對比調整)
int main(void)
{
char select[10];
char exit[5] = "exit";
while(1){
printf("請輸入圖片檔名(包含副檔名,例: input.bmp),輸入exit為結束: ");
scanf("%s", &select);
if(strcmp(select, exit) == 0){
printf("程式結束!\n") ;
system("PAUSE");
return 0;
}
GCS(select, write_path);
}
return 0;
}
void GCS(const char *input, const char *output){
unsigned char bmp_head[54]={0}; //存放bmp的標頭檔
unsigned char *data_buf; //BMP的資料
unsigned int i,j;
unsigned int width=0, high=0; //BMP圖檔的寬與高
unsigned int bmp_w; //BMP資料陣列每一列長度
int max=0, min=255;
char exit[] = "exit";
FILE *fp1; //輸入檔
FILE *fp2; //輸出檔
fp1 = fopen(input, "rb" ); //讀取二進位圖檔並寫入
fp2 = fopen(output, "w+b" ); //新建二進位檔並讀取寫入
if(fp1 == NULL){
printf("檔案找不到!\n");
return;
}
fread(bmp_head,54,1,fp1); //讀取來源標頭檔
fwrite(bmp_head,54,1,fp2); //寫入標頭檔至fp2
//從標頭檔讀出BMP圖檔寬度及高度 (單位:像素)
width = *(bmp_head+18) + 256*(*(bmp_head+19)) + 256*256*(*(bmp_head+20)) + 256*256*256*(*(bmp_head+21));
high = *(bmp_head+22) + 256*(*(bmp_head+23)) + 256*256*(*(bmp_head+24)) + 256*256*256*(*(bmp_head+25));
printf("%d\n", *(bmp_head+28));
printf("%d %d %d %d\n", *(bmp_head+18),*(bmp_head+19),*(bmp_head+20),*(bmp_head+21));
printf("%d %d %d %d\n", *(bmp_head+22),*(bmp_head+23),*(bmp_head+24),*(bmp_head+25));
printf("%d %d\n", width,high);
//BMP資料陣列每一列長度為:
//像素寬度X顏色深度,即width*3(以24bits的BMP為例)
bmp_w=width*3;
//每一列長度須為4的倍數,所以要加上4-(width*3)%4
if(bmp_w % 4) bmp_w += 4-(bmp_w % 4);
//跟系統要BMP資料陣列一列長度的記憶體
data_buf = (unsigned char *) malloc(sizeof(unsigned char)*bmp_w);
for(i=0; i<high; i++){
fread(data_buf, bmp_w, 1, fp1); //每次從fp1讀取一列BMP陣列至data_buf
for(j=0; j<width; j++){
if(data_buf[j] > max) max = data_buf[j];
if(data_buf[j] < min) min = data_buf[j];
}
}
fp1 = fopen(input, "r+b");
fread(bmp_head,54,1,fp1);
for(i=0; i<high; i++){
fread(data_buf, bmp_w, 1, fp1); //每次從fp1讀取一列BMP陣列至data_buf
for(j=0; j<width*3; j+=3){
data_buf[j] = 255*(data_buf[j+2]-min)/(max-min);
data_buf[j+1] = 255*(data_buf[j+1]-min)/(max-min);
data_buf[j+2] = 255*(data_buf[j]-min)/(max-min);
}
fwrite(data_buf,bmp_w,1,fp2); //將data_buf存入fp2檔
}
fclose(fp1);
fclose(fp2);
printf("Local contrast stretching處理完成!\n請開啟檔案 "write_path"\n\n");
}
#include <stdlib.h>
#define write_path "output.bmp" //輸出圖檔的檔名
void GCS(const char*, const char*); //global contrast stretching(全域對比調整)
int main(void)
{
char select[10];
char exit[5] = "exit";
while(1){
printf("請輸入圖片檔名(包含副檔名,例: input.bmp),輸入exit為結束: ");
scanf("%s", &select);
if(strcmp(select, exit) == 0){
printf("程式結束!\n") ;
system("PAUSE");
return 0;
}
GCS(select, write_path);
}
return 0;
}
void GCS(const char *input, const char *output){
unsigned char bmp_head[54]={0}; //存放bmp的標頭檔
unsigned char *data_buf; //BMP的資料
unsigned int i,j;
unsigned int width=0, high=0; //BMP圖檔的寬與高
unsigned int bmp_w; //BMP資料陣列每一列長度
int max=0, min=255;
char exit[] = "exit";
FILE *fp1; //輸入檔
FILE *fp2; //輸出檔
fp1 = fopen(input, "rb" ); //讀取二進位圖檔並寫入
fp2 = fopen(output, "w+b" ); //新建二進位檔並讀取寫入
if(fp1 == NULL){
printf("檔案找不到!\n");
return;
}
fread(bmp_head,54,1,fp1); //讀取來源標頭檔
fwrite(bmp_head,54,1,fp2); //寫入標頭檔至fp2
//從標頭檔讀出BMP圖檔寬度及高度 (單位:像素)
width = *(bmp_head+18) + 256*(*(bmp_head+19)) + 256*256*(*(bmp_head+20)) + 256*256*256*(*(bmp_head+21));
high = *(bmp_head+22) + 256*(*(bmp_head+23)) + 256*256*(*(bmp_head+24)) + 256*256*256*(*(bmp_head+25));
printf("%d\n", *(bmp_head+28));
printf("%d %d %d %d\n", *(bmp_head+18),*(bmp_head+19),*(bmp_head+20),*(bmp_head+21));
printf("%d %d %d %d\n", *(bmp_head+22),*(bmp_head+23),*(bmp_head+24),*(bmp_head+25));
printf("%d %d\n", width,high);
//BMP資料陣列每一列長度為:
//像素寬度X顏色深度,即width*3(以24bits的BMP為例)
bmp_w=width*3;
//每一列長度須為4的倍數,所以要加上4-(width*3)%4
if(bmp_w % 4) bmp_w += 4-(bmp_w % 4);
//跟系統要BMP資料陣列一列長度的記憶體
data_buf = (unsigned char *) malloc(sizeof(unsigned char)*bmp_w);
for(i=0; i<high; i++){
fread(data_buf, bmp_w, 1, fp1); //每次從fp1讀取一列BMP陣列至data_buf
for(j=0; j<width; j++){
if(data_buf[j] > max) max = data_buf[j];
if(data_buf[j] < min) min = data_buf[j];
}
}
fp1 = fopen(input, "r+b");
fread(bmp_head,54,1,fp1);
for(i=0; i<high; i++){
fread(data_buf, bmp_w, 1, fp1); //每次從fp1讀取一列BMP陣列至data_buf
for(j=0; j<width*3; j+=3){
data_buf[j] = 255*(data_buf[j+2]-min)/(max-min);
data_buf[j+1] = 255*(data_buf[j+1]-min)/(max-min);
data_buf[j+2] = 255*(data_buf[j]-min)/(max-min);
}
fwrite(data_buf,bmp_w,1,fp2); //將data_buf存入fp2檔
}
fclose(fp1);
fclose(fp2);
printf("Local contrast stretching處理完成!\n請開啟檔案 "write_path"\n\n");
}
訂閱:
文章 (Atom)