Can sıkıntısı + merak = 3DNow! ‘lı İstatistik :)

3dnow_kapak

Dün can sıkıntısınında etkisiyle bişiler yapim dedim aklımdada şöle istatistikle
lgili basit bir örnek yapıp bloğuma koymak vardı.. Ama gene duramadım gittim
AMD’nin geliştirici makalelerini okudum 3Dnow! teknolojisi örneklerini inceledim
ve Varyans , Standart sapma ve ortalamaları 3DNow! kullanarak hesaplattım
sonuç ilk 3DNow! denemem için hiçde fena değil 🙂

3dnow2

Peki nedir bu 3Dnow! ?

3DNow! AMD’nin kendi işlemcileri için geliştirdiği multimedya komut setidir ,
ilk defa 1998 yılında K6-2’ye eklenmiştir.
İşlemcinin grafik yoğunluklu uygulamalar için vektör işleme ihtiyaçlarını karşılamak için dizayn edilmiştir.

3DNow! Destekleyen işlemciler

K6-2 ve sonrası AMD işlemciler K6-III,Athlon,Duron,Atlon XP,Sempron,Athlon 64
Athlon 64 X2,Opteron,Turion 64, Turion 64 X2,Geode NX

Via C3 ve daha günceli

IDT Winchip 2 ve daha günceli

Msvc++ dosyalarını derleyebilmeniz için;

Visual Studio 6.0 Processor Pack yüklemelisiniz.
Processor Pack için ise Visual Studio 6.0 Service Pack 5.0‘ı kurmanız gerekiyor
Ben SP 6.0’ı yükleyim yer dedim yemedi 🙁 mutlaka Service Pack 5.0 yüklemelisiniz.

İndirmek için tıklayın

Not: İstatistik yalan değildir , beşer şaşar 🙂

Sezar Şifrelemesi (Caesar Cipher)

sezar shift

Tarihin ilk kriptolojik fikirleri İngilizce’de transposition and substitution cipher adını taşır, yani yer değiştirme ve harf değiştirme şifrelemesi. Bu yöntemlerden ilki bir yazıdaki harflerin yerlerini değiştirerek, ikincisi ise harfleri başka harflerle değiştirerek elde edilir. Bu şifrelemeyi kullanan belki de en ünlü teknik Sezar Åžifresi’dir: bu şifrede, her harf o harften birkaç sonraki harf kullanılarak yazılır. Örneğin, 3 harf atlamalı Sezar Åžifresi’nde “deneme” yerine “fğrğpğ” yazılır.

Öte yandan, Sezar Åžifresi kırmak görece kolay olmaktadır: bir filolog bir dilde en çok geçen harfleri bulabilir. O harfler ile mesajda en sık geçen harfleri karşılaştırarak hangi harfin hangi harf ile değiştirildiği bulunabilir. Bu adımların ardından, mesaj çözülmüş olur..

İngilizce’deki harflerin dağılımı

alfabe histogramı

İşte bu basit şifrelemenin C ile yazılışı.

/*Author : ismail Ata Kurt
18.04.2006
*/

#include “stdafx.h”
#include “stdlib.h”

int s_ascii[] = {97,98,99,100,101,102,103,104,105,106,107,108,109,110

,111,112,113,114,115,116,117,118,119,120,121,122};

int b_ascii[] = {65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81

,82,83,84,85,86,87,88,89,90};

int caesar_crypt(char* source,char* target,int k);
char caesar_char_crypt(char chr,int k);

int caesar_decrypt(char* source,char* target,int k);
char caesar_char_decrypt(char chr,int k);

int main(int argc, char* argv[])
{
int k=1;//the shift parameter, here 1, is used as the key)

caesar_crypt(“plain_text.txt”,”encoded_text.txt”,k);//crypts plain_text.txt to encoded_text.txt
caesar_decrypt(“encoded_text.txt”,”new_plain_text.txt”,k);//decrypts encoded_text.txt to new_plain_text.txt

return 0;
}

int caesar_crypt(char* source,char* target,int k) {

int i=0;
int o=0;

FILE *sf;//Source File
FILE *tf;//Target File
char temp;

char *text = new char;

char *sig = “{top secret}”;

if ( (sf = fopen(source, “r”)) == NULL )
{
printf(“\a\aERROR: Can’t open input file!\n”);
exit(1);
}

while ( ( temp = fgetc(sf)) != EOF ) {

o++;
text[o-1] = caesar_char_crypt(temp,k);

}

if ( fclose( sf ) )
printf(“\a\aERROR: Can’t close source file!\n”);

if ( (tf = fopen(target, “w”)) == NULL )
{
printf(“\a\aERROR: Can’t open target file!\n”);
exit(1);
}

for(i=0;i< =11;i++) {
fputc(sig[i],tf);
}
for(i=0;i< =o;i++) {
fputc(text[i],tf);
}

if ( fclose( tf ) )
printf(“\a\aERROR: Can’t close target file!\n”);

return 0;
}

int caesar_decrypt(char* source,char* target,int k) {

int i=0;
int o=0;

FILE *sf;//Source File
FILE *tf;//Target File

char temp;

char *text = new char;
char *sig = “{top secret}”;

if ( (sf = fopen(source, “r”)) == NULL )
{
printf(“\a\aError: Can’t open target file!\n”);
exit(1);
}

while ( ( temp = fgetc(sf)) != EOF ) {

o++;

if(o>12) {

text[o-13] = caesar_char_decrypt(temp,k);
//printf(“%d\n”,o-13);

} else {
if(sig[o-1]!=temp){
printf(“\a\aError: Not’a ceasar cipher encoded file!\n”);
exit(1);
}
}

}

if ( fclose( sf ) )
printf(“\a\aError: Can’t close file!\n”);

if ( (tf = fopen(target, “w”)) == NULL )
{
printf(“\a\aError: Can’t open target file!\n”);
exit(1);
}

for(i=0;i< =o;i++) {

fputc(text[i],tf);
}

if ( fclose( tf ) )
printf(“\a\aError: Can’t close target file!\n”);

return 0;
}

char caesar_char_crypt(char chr,int k) {

int i=0;
int s=0;
char temp;

for(i=0;i< =25;i++) {

if(int(chr) == s_ascii[i]) {

s++;
temp = s_ascii[((k+i) % 25)];
break;

}
if(int(chr) == b_ascii[i]) {

s++;
temp = b_ascii[((k+i) % 25)];
break;

}

}

if(s >=1) {
return temp;
} else {
return chr;
}
}

char caesar_char_decrypt(char chr,int k) {

int i=0;
int s=0;
char temp;

for(i=0;i< =25;i++) {

if(int(chr) == s_ascii[i]) {

s++;
temp = s_ascii[((i-k) % 25)];
break;

}
if(int(chr) == b_ascii[i]) {

s++;
temp = b_ascii[((i-k) % 25)];
break;

}

}

if(s >=1) {
return temp;
} else {
return chr;
}
}

Microsoft VC++ 6 proje dosyaları