Torna indietro   Hardware Upgrade Forum > Software > Programmazione

TCL 65C8L, la recensione del SQD-Mini LED da 4400 nit misurati
TCL 65C8L, la recensione del SQD-Mini LED da 4400 nit misurati
La tecnologia SQD-Mini LED di TCL arriva sul taglio da 65 pollici con la serie C8L: 2040 zone, pannello WHVA 2.0 e un picco che alle rilevazioni delle sonde tocca i 4400 nit nel profilo Filmmaker e un HDR quasi perfetto
MSI Maestro 500 Wireless: ANC e 90 ore di autonomia a 70 euro
MSI Maestro 500 Wireless: ANC e 90 ore di autonomia a 70 euro
Wireless 2.4 GHz, Bluetooth 5.4, cancellazione attiva del rumore, design pieghevole e un'autonomia che mette in imbarazzo prodotti che costano il doppio. Le Maestro 500 non eccellono in nulla, ma offrono tutto. E a questo prezzo è difficile chiedere di più
NL-LC1 è il primo dissipatore a liquido AIO di Noctua: silenzio è la parola d'ordine
NL-LC1 è il primo dissipatore a liquido AIO di Noctua: silenzio è la parola d'ordine
Dopo anni di attesa e una lunga fase di sviluppo, Noctua entra nel mercato dei dissipatori a liquido AIO con la nuova serie NL-LC1. Forte dell'esperienza maturata nel raffreddamento ad aria, l'azienda austriaca promette di portare la propria filosofia fatta di qualità costruttiva, attenzione ai dettagli e silenziosità anche in questo segmento. Abbiamo provato il nuovo sistema per scoprire se riesce a distinguersi in un mercato ormai molto competitivo.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 13-09-2007, 16:39   #1
xirc85
Member
 
L'Avatar di xirc85
 
Iscritto dal: Sep 2007
Città: Trento
Messaggi: 91
[JAVA] Computazione di 4 bit di crc

Ciao a tutti!
Devo computare 4 bit di crc su un'insieme di bit di numero variabile.
Però non so se esiste un modo tramite api java oppure se devo farmelo a mano...

Grazie in anticipo
xirc85 è offline   Rispondi citando il messaggio o parte di esso
Old 13-09-2007, 16:53   #2
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da xirc85 Guarda i messaggi
Devo computare 4 bit di crc su un'insieme di bit di numero variabile.
Però non so se esiste un modo tramite api java oppure se devo farmelo a mano...
No, non c'è nulla di già fatto, almeno per quanto riguarda il framework standard (che io sappia, ovviamente). Tra l'altro un CRC di 4 bit è alquanto inconsueto.

Piuttosto, indica:
* Il polinomio da usare
* Il valore di inizializzazione
* Se le "parole" in input vanno riflesse
* Se il CRC finale va riflesso
* Se il CRC finale va XORato con un certo valore

Questi sono i parametri che vengono usati tipicamente per descrivere un algoritmo CRC.
__________________
Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet

Ultima modifica di andbin : 13-09-2007 alle 16:57.
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 13-09-2007, 16:58   #3
xirc85
Member
 
L'Avatar di xirc85
 
Iscritto dal: Sep 2007
Città: Trento
Messaggi: 91
In effetti non saprei risponderti con esattezza, poichè mi è stata data piena libertà a riguardo , ma non avendo molta esperienza non so da dove iniziare...
xirc85 è offline   Rispondi citando il messaggio o parte di esso
Old 13-09-2007, 17:16   #4
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da xirc85 Guarda i messaggi
In effetti non saprei risponderti con esattezza, poichè mi è stata data piena libertà a riguardo , ma non avendo molta esperienza non so da dove iniziare...
Uhm ... allora è un problema in più.

Innanzitutto inizia a vedere qui: http://en.wikipedia.org/wiki/Cyclic_redundancy_check

Un CRC a 4 bit in effetti c'è.
__________________
Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 14-09-2007, 08:26   #5
xirc85
Member
 
L'Avatar di xirc85
 
Iscritto dal: Sep 2007
Città: Trento
Messaggi: 91
Ho letto quanto mi hai suggerito...
In linea di principio credo ci aver capito più o meno come devo fare...
Correggimi se sbaglio, dato il polinomio devo fare un xor iterativamente sui bit fino a che non arrivo ad avere un uno a destra in posizione numero_bit-numero_bit_polinomio e a questo punto applicando ancora xor, ottengo i miei bit di crc. Giusto?
Ho però un dubbio per quanto riguarda il polinomio da usare. Mi spiego meglio: nell'esempio fornito (da Wiki) si faceva riferimento a un crc a 3-bit e non ho capito come ha ottenuto il divisore a 4 bit.

Grazie mille
xirc85 è offline   Rispondi citando il messaggio o parte di esso
Old 14-09-2007, 09:02   #6
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Ti faccio un esempio: tra i vari CRC elencati nella pagina di Wikipedia che ho indicato, c'è un CRC-8 ATM. È abbastanza semplice perché il valore iniziale è 0, non c'è riflessione per input/output e non c'è XOR sull'output.

Tradotto in codice:
Codice:
public class TestCrc8
{
    // Polinomio CRC-8 ATM: x^8 + x^2 + x + 1
    public static final byte CRC8ATM_POLY = 0x07;

    public static void main (String[] args)
    {
        // sequenza di test '123456789'
        byte[] data = { 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39 };

        byte crc = crc8Atm (data);

        System.out.format ("CRC 8-ATM = %02X%n", crc);
    }

    public static byte crc8Atm (byte[] v)
    {
        byte crc = 0;

        for (byte b : v)
        {
            crc = (byte) (crc ^ b);

            for (int i = 0; i < 8; i++)
                crc = (byte) (crc << 1 ^ ((crc & 0x80) != 0 ? CRC8ATM_POLY : 0));
        }
        
        return crc;
    }
}
Il CRC-8 ATM della sequenza '123456789' è F4h
__________________
Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 14-09-2007, 09:40   #7
xirc85
Member
 
L'Avatar di xirc85
 
Iscritto dal: Sep 2007
Città: Trento
Messaggi: 91
Grazie per il codice che mi hai fornito
Un'ultima cosa: come faccio a calcolarmi il polinomio? credo che sia una cosa del tipo x^4+x+1, ma non so cosa ne risulta...

Grazie ancora
xirc85 è offline   Rispondi citando il messaggio o parte di esso
Old 14-09-2007, 09:57   #8
xirc85
Member
 
L'Avatar di xirc85
 
Iscritto dal: Sep 2007
Città: Trento
Messaggi: 91
Credo di aver trovato la soluzione.. bastava pensare in maniera ovvia

Grazie ancora
xirc85 è offline   Rispondi citando il messaggio o parte di esso
Old 14-09-2007, 10:10   #9
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da xirc85 Guarda i messaggi
Grazie per il codice che mi hai fornito
Prego, ma è solo un esempio, che comunque devi adattare al CRC che poi scegli.

Quote:
Originariamente inviato da xirc85 Guarda i messaggi
Un'ultima cosa: come faccio a calcolarmi il polinomio? credo che sia una cosa del tipo x^4+x+1, ma non so cosa ne risulta...
Una cosa è se devi studiare tu un polinomio (deve avere delle proprietà ben precise), un'altra se devi "tradurlo" in un valore da usare nel codice.
La traduzione è semplice: Il bit più alto lo togli, per il resto, x lo fai diventare 2. Per il CRC-8 ATM che è:

x^8 + x^2 + x + 1

2^2 + 2 + 1 = 7

Il monomio più a sinistra (quello che dà il grado del polinomio) si toglie per un motivo. Nota che nel codice c'è uno shift a sinistra del CRC. Quando un bit a 1 "sbuca" fuori a sinistra (è poi il test che si fa con (crc & 0x80) ), si fa lo XOR con il polinomio. Quindi il bit 1 che sbuca andrebbe concettualmente in XOR con il bit più alto del polinomio (= 0). Per questo non lo si usa.


EDIT: aggiungo ancora una cosa. La implementazione che ho fatto è a "bit", ovviamente poco performante. Per velocizzare la computazione si usa in genere una implementazione "table based", in cui si precalcolano i CRC delle N parole, poi si combinano in modo "particolare" (adesso su due piedi non ricordo di preciso come).
__________________
Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet

Ultima modifica di andbin : 14-09-2007 alle 10:31.
andbin è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


TCL 65C8L, la recensione del SQD-Mini LED da 4400 nit misurati TCL 65C8L, la recensione del SQD-Mini LED da 440...
MSI Maestro 500 Wireless: ANC e 90 ore di autonomia a 70 euro MSI Maestro 500 Wireless: ANC e 90 ore di autono...
NL-LC1 è il primo dissipatore a liquido AIO di Noctua: silenzio è la parola d'ordine NL-LC1 è il primo dissipatore a liquido A...
Boox Go 10.3 (Gen II) Lumi: il tablet e-ink con Android 15 e penna, dal prezzo super Boox Go 10.3 (Gen II) Lumi: il tablet e-ink con ...
Gigabyte MO32U24 OLED: il 4K a 240Hz su un pannello OLED ideale per il gaming Gigabyte MO32U24 OLED: il 4K a 240Hz su un panne...
Snap si divide ancora: dopo i licenziame...
Microsoft e Adobe collaborano per render...
LG OLED evo AI C5 in offerta su Amazon: ...
Un'azienda chiuderà per colpa di ...
Monitor 5K professionale ASUS ProArt a p...
Apple iPhone 17 punta al prezzo giusto: ...
Google Pixel 10a rompe gli schemi: 7 ann...
Epic Games Store e Launcher pronti a rif...
Steam Controller, la domanda è fu...
Scendono di circa 50€ i prezzi di Garmin...
Un dispositivo, tutto l'ecosistema x86 i...
Apple Watch SE 3 GPS scende a soli 199€,...
Intel rafforza la divisione Foundry: l'e...
Smart TV LG OLED evo AI C5 4K da 55 poll...
I lander lunari della missione Artemis I...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 08:40.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v