Torna indietro   Hardware Upgrade Forum > Software > Programmazione

DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort
DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort
Fino a 740 km WLTP con la batteria da 97,2 kWh, sospensioni che leggono la strada con una telecamera e un abitacolo da salotto parigino. La nuova DS N°7 raccoglie l'eredità della DS 7 e la porta, per la prima volta, nel mondo 100% elettrico. Ecco come è fatta, cosa offre e quanto costa.
Recensione Samsung Galaxy Tab S12 Ultra: non chiamatelo tablet... è molto di più
Recensione Samsung Galaxy Tab S12 Ultra: non chiamatelo tablet... è molto di più
Abbiamo provato Samsung Galaxy Tab S12 Ultra nella versione 12 GB + 256 GB con tastiera, e il risultato è un tablet che in questa configurazione si comporta come un notebook con la fluidità tipica di Android. Spessore di 5,1 mm, display Dynamic AMOLED 2X da 14,6 pollici, MediaTek Dimensity 9500 e un software senza incertezze compongono un prodotto di vertice, con prezzi da 1.539 euro, frenato solo da un'autonomia nella parte bassa del confronto
Hyundai IONIQ 5 N, l'elettrica che finge di essere termica (e ci riesce da paura)
Hyundai IONIQ 5 N, l'elettrica che finge di essere termica (e ci riesce da paura)
Abbiamo provato per dieci giorni la Hyundai IONIQ 5 N, con 650 CV, 770 Nm e uno 0-100 km/h in 3,4 secondi. Il suo punto forte è N e-Shift, che simula un cambio a otto rapporti con suoni da motore termico e perfino un bang supersonico
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 30-05-2011, 12:33   #1
djpeppe
Senior Member
 
L'Avatar di djpeppe
 
Iscritto dal: Sep 2006
Città: M.O.F.N. (Middle of Fuckin Nowhere)
Messaggi: 309
[C++] Operare sui bit

ciao,
se ho un byte con 00100000 e voglio cambiare ragionare solo sul sesto bit da destra (l'1) come posso fare.
nella mia idea ogni bit ha un suo significato, e perciò non voglio ragionare su tutto il byte ma solo su un bit. con quali funzioni posso prelevare un bit e modificarlo?
__________________
The Pepppppppppppppppppppppppppppp
"Sono figlio della libertà, ad essa devo tutto quello che sono"
djpeppe è offline   Rispondi citando il messaggio o parte di esso
Old 30-05-2011, 12:44   #2
GByTe87
Senior Member
 
L'Avatar di GByTe87
 
Iscritto dal: Mar 2007
Città: Milano Beach
Messaggi: 1696
Usa le maschere di bit e i bitwise operator.

Se vuoi impostare a 1 il sesto bit basta che fai..

Codice:
tuoByte = tuoByte | 00100000;
Se vuoi impostarlo a zero...

Codice:
tuoByte = tuoByte & 11011111;
Considera che il numero dopo l'operatore bitwise lo devi esprimere come decimale o esadecimale.

Altrimenti, potresti usare il container STL bitset.
__________________
~ Cthulhu: MacBookPro 13.3" ~ Azathoth: D510MO

Ultima modifica di GByTe87 : 30-05-2011 alle 15:25.
GByTe87 è offline   Rispondi citando il messaggio o parte di esso
Old 30-05-2011, 12:47   #3
tuccio`
Senior Member
 
Iscritto dal: Apr 2010
Città: Frosinone
Messaggi: 416
per creare una mask 0 .. 0 1 0 0 0 0 0 (solo un uno al sesto bit) così:

Codice:
unsigned int mask = 1 << 5; // errata corrige
quindi se vuoi il valore del sesto bit nella variabile x ti basta fare un end bitwise:

Codice:
if (mask & x)
{
  // il sesto bit in x è 1
}
else
{
  // è zero
}
se vuoi modificare solo il sesto bit puoi usare mezzi simili, magari con lo xor bitwise

Codice:
x = x ^ mask
gli zeri sono elementi neutri dello xor, mentre l'uno al sesto bit complementa (1 ^ 1 = 0 e 0 ^ 1 = 1)

Ultima modifica di tuccio` : 30-05-2011 alle 16:21.
tuccio` è offline   Rispondi citando il messaggio o parte di esso
Old 30-05-2011, 15:05   #4
marco.r
Senior Member
 
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
Quote:
Originariamente inviato da tuccio` Guarda i messaggi
per creare una mask 0 .. 0 1 0 0 0 0 0 (solo un uno al sesto bit) così:

Codice:
unsigned int mask = 1 << 6;
Quello e' il settimo bit
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele
marco.r è offline   Rispondi citando il messaggio o parte di esso
Old 30-05-2011, 15:31   #5
!fazz
Moderatore
 
L'Avatar di !fazz
 
Iscritto dal: Nov 2006
Messaggi: 22312
Quote:
Originariamente inviato da djpeppe Guarda i messaggi
ciao,
se ho un byte con 00100000 e voglio cambiare ragionare solo sul sesto bit da destra (l'1) come posso fare.
nella mia idea ogni bit ha un suo significato, e perciò non voglio ragionare su tutto il byte ma solo su un bit. con quali funzioni posso prelevare un bit e modificarlo?
devi mascherare

se vuoi forzarlo a 1 fai una or

variabile |=0x20;
se vuoi forzarlo a zero
variabile&=0xDF;

per il confronto prima mascheri e poi confronti



if (( variabile& 0x20)== 0x20)
{
//bit6=1
}
__________________
"WS" (p280,cx750m,4790k+212evo,z97pro,4x8GB ddr3 1600c11,GTX760-DC2OC,MZ-7TE500, WD20EFRX)
Desktop (three hundred,650gq,3800x+nh-u14s ,x570 arous elite,2x16GB ddr4 3200c16, rx5600xt pulse P5 1TB)+NB: Lenovo p53 i7-9750H,64GB DDR4,2x1TB SSD, T1000
!fazz è offline   Rispondi citando il messaggio o parte di esso
Old 30-05-2011, 16:20   #6
tuccio`
Senior Member
 
Iscritto dal: Apr 2010
Città: Frosinone
Messaggi: 416
Quote:
Originariamente inviato da marco.r Guarda i messaggi
Quello e' il settimo bit
yup, my fault
tuccio` è offline   Rispondi citando il messaggio o parte di esso
Old 31-05-2011, 09:01   #7
sottovento
Senior Member
 
L'Avatar di sottovento
 
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
Quote:
Originariamente inviato da djpeppe Guarda i messaggi
ciao,
se ho un byte con 00100000 e voglio cambiare ragionare solo sul sesto bit da destra (l'1) come posso fare.
nella mia idea ogni bit ha un suo significato, e perciò non voglio ragionare su tutto il byte ma solo su un bit. con quali funzioni posso prelevare un bit e modificarlo?
In alternativa puoi definire una struttura con mappa a bit:

Codice:
struct MyStruct
{
    int b0: 1;
    int b1: 1;
    int b2: 1;
    int b3: 1;
    int b4: 1;
    int b5: 1;
    int b6: 1;
    int b7: 1;
}
Puoi quindi accedere come struttura.b6.
__________________
In God we trust; all others bring data
sottovento è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort DS N°7 E-Tense: il SUV premium made in Melfi...
Recensione Samsung Galaxy Tab S12 Ultra: non chiamatelo tablet... è molto di più Recensione Samsung Galaxy Tab S12 Ultra: non chi...
Hyundai IONIQ 5 N, l'elettrica che finge di essere termica (e ci riesce da paura) Hyundai IONIQ 5 N, l'elettrica che finge di esse...
CES Unveiled Milan, l'IA diventa tecnologia fondativa e il commercio torna centrale CES Unveiled Milan, l'IA diventa tecnologia fond...
 Recensione OPPO Find X10 Pro Max: un top di gamma completo con tre fotocamere da 200MP Recensione OPPO Find X10 Pro Max: un top di gam...
Apple annuncia i nuovi MacBook Pro con s...
Warhorse Studios colpita da un grave att...
MX Master 4, arriva l'edizione speciale ...
Kali Linux 2026.3 porta la caccia alle r...
Oracle si affida a OpenAI: ChatGPT e Cod...
Kaspersky punta su IA e servizi gestiti ...
Già sfruttata la falla Brotli che...
Potrebbe essere stato scoperto un nuovo ...
Claude Code, il prompt per scovare telec...
Palit e GALAX smentiscono le voci sulla ...
Fujifilm annuncia la Instax Mini Evo 2, ...
Tailscale chiude le falle SSH verso root...
Il tuo Galaxy laggava nei giochi? Samsun...
Arrivano i nuovi Amazon Echo: prezzi da ...
Il nuovo pickup elettrico Ford può alime...
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: 01:21.


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