473,403 Members | 2,359 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,403 software developers and data experts.

extract "set" bits including position from unsigned long

Hello, I have a variable of type unsigned long. It has a number of bits set
(with set I mean they equal one). I need to determine those bits and their
position and create new numbers from them. For example, consider this
four-bit number:
1100
from this number I want to extract two numbers:
1000 and 100
had the four-bit number been 0101 I would want to extract 100 and 1.

How should I do this? I wish I had some code to post but I don't right now
=/

These new numbers I will use to look-up strings in a map.

/ WP
Jul 22 '05 #1
7 3574

"William Payne" <mi**************@student.liu.se> wrote in message
news:cg**********@news.island.liu.se...
Hello, I have a variable of type unsigned long. It has a number of bits
set (with set I mean they equal one). I need to determine those bits and
their position and create new numbers from them. For example, consider
this four-bit number:
1100
from this number I want to extract two numbers:
1000 and 100
had the four-bit number been 0101 I would want to extract 100 and 1.

How should I do this? I wish I had some code to post but I don't right now
=/

These new numbers I will use to look-up strings in a map.

/ WP


Will this work?
for(unsigned long i = 1; i <= sizeof(unsigned long) / 8; i+=i)
{
if(i & styles)
{
map<unsigned long, string>::const_iterator pos;

pos = styles_map.find(i);

if(pos != styles_map.end())
{
cout << pos->second << endl;
}
}
}

styles is of type unsigned long and styles_map is map<unsigned long, string>

/ WP
Jul 22 '05 #2

"William Payne" <mi**************@student.liu.se> wrote in message
news:cg**********@news.island.liu.se...

"William Payne" <mi**************@student.liu.se> wrote in message
news:cg**********@news.island.liu.se...
Hello, I have a variable of type unsigned long. It has a number of bits
set (with set I mean they equal one). I need to determine those bits and
their position and create new numbers from them. For example, consider
this four-bit number:
1100
from this number I want to extract two numbers:
1000 and 100
had the four-bit number been 0101 I would want to extract 100 and 1.

How should I do this? I wish I had some code to post but I don't right
now =/

These new numbers I will use to look-up strings in a map.

/ WP


Will this work?
for(unsigned long i = 1; i <= sizeof(unsigned long) / 8; i+=i)
{
if(i & styles)
{
map<unsigned long, string>::const_iterator pos;

pos = styles_map.find(i);

if(pos != styles_map.end())
{
cout << pos->second << endl;
}
}
}

styles is of type unsigned long and styles_map is map<unsigned long,
string>

/ WP


No, it won't. =) But is this correct:

unsigned long i = 1;

for(unsigned long n = 0; n < 32; ++n)
{
if(i & styles)
{
map<unsigned long, string>::const_iterator pos;

pos = styles_map.find(i);

if(pos != styles_map.end())
{
cout << pos->second << endl;
}
}

i += i;
}

styles is of type unsigned long and styles_map is map<unsigned long, string>

/ WP
Jul 22 '05 #3
William Payne wrote:

No, it won't. =) But is this correct:

unsigned long i = 1;

for(unsigned long n = 0; n < 32; ++n)
{
if(i & styles)
{
map<unsigned long, string>::const_iterator pos;

pos = styles_map.find(i);

if(pos != styles_map.end())
{
cout << pos->second << endl;
}
}

i += i;
}

styles is of type unsigned long and styles_map is map<unsigned long, string>


Please post compilable code. It makes it easier to help you.

What you wrote will probably work, however, consider this.
#include <iostream>
#include <string>
#include <limits>
#include <map>

using namespace std;
typedef unsigned long styles_bitmask_t;
typedef map<styles_bitmask_t, string> styles_map_t;

void scan_styles( styles_bitmask_t styles, styles_map_t & styles_map )
{

for(int i = 0; i < numeric_limits<styles_bitmask_t>::digits ; ++ i)
{
styles_bitmask_t mask_val = ( 1 << i );

if ( styles & mask_val )
{
map<unsigned long, string>::const_iterator pos;

pos = styles_map.find( mask_val );

if(pos != styles_map.end() )
{
cout << pos->second << endl;
}
}
}

}
int main()
{

styles_map_t s_map;

s_map[ 1 << 1 ] = "s1";
s_map[ 1 << 2 ] = "s2";
s_map[ 1 << 3 ] = "s3";
s_map[ 1 << 4 ] = "s4";
s_map[ 1 << 5 ] = "s5";
s_map[ 1 << 6 ] = "s6";

scan_styles( 0xa, s_map );
}

This probably does what you want.

Note that unsigned long might not be 32 bits. Using
numeric_limits<T>::digits eliminates that.

There is also a faster way to do this. There is a trivial way of
finding the first set bit in an integer type. This would use far less
cyles on sparse bit masks.

#include <iostream>
#include <string>
#include <limits>
#include <map>

using namespace std;
typedef unsigned long styles_bitmask_t;
typedef map<styles_bitmask_t, string> styles_map_t;

void scan_styles( styles_bitmask_t styles, styles_map_t & styles_map )
{

while ( styles )
{
styles_bitmask_t drop_first = styles & ( styles - 1 );

styles_bitmask_t first_set = styles ^ drop_first;

styles = drop_first;

map<unsigned long, string>::const_iterator pos;

pos = styles_map.find( first_set );

if(pos != styles_map.end() )
{
cout << pos->second << endl;
}
}

}
int main()
{

styles_map_t s_map;

s_map[ 1 << 1 ] = "s1";
s_map[ 1 << 2 ] = "s2";
s_map[ 1 << 3 ] = "s3";
s_map[ 1 << 4 ] = "s4";
s_map[ 1 << 5 ] = "s5";
s_map[ 1 << 6 ] = "s6";

scan_styles( 0xa, s_map );
}

Jul 22 '05 #4
"William Payne" <mi**************@student.liu.se> wrote in message
news:cg**********@news.island.liu.se...
Hello, I have a variable of type unsigned long. It has a number of bits set (with set I mean they equal one). I need to determine those bits and their
position and create new numbers from them. For example, consider this
four-bit number:
1100
from this number I want to extract two numbers:
1000 and 100
had the four-bit number been 0101 I would want to extract 100 and 1.

How should I do this? I wish I had some code to post but I don't right now
=/

These new numbers I will use to look-up strings in a map.

/ WP


#include <iomanip>
#include <ios>
#include <iostream>
#include <limits>
#include <string>
#include <vector>

unsigned long pwr(unsigned long value, unsigned int exp)
{
unsigned long result(1);

while(exp--)
result *= value;

return result;
}

std::string bin(unsigned long value)
{
std::string result;
while(value)
{
result.insert(result.begin(), 1, char(value % 2 + '0'));
value /= 2;
}

return result;

}

void extract(unsigned long value, std::vector<unsigned long>& results)
{
results.clear();

unsigned int bit(std::numeric_limits<unsigned long>::digits - 1);

unsigned long
component(pwr(2, std::numeric_limits<unsigned long>::digits - 1));

do
{
std::cout << "Bit " << std::setw(2) << bit << " is";

if(value & component)
results.push_back(component);
else
std::cout << " not";

std::cout << " set\n";

--bit;

} while(component /= 2);

std::cout << '\n';
}

unsigned int which_pwr(unsigned long value)
{
unsigned int result(0);

while(value /= 2)
++result;

return result;
}

int main()
{
std::streamsize b_wid(std::numeric_limits<unsigned long>::digits + 1);
std::streamsize d_wid(std::numeric_limits<unsigned long>::digits10 + 2);
double lim(std::numeric_limits<unsigned long>::max());
double val(0);

unsigned long test(0);
std::vector<unsigned long> values;

for(val = 0; val <= lim; ++val)
{
test = unsigned long(val);

std::cout << "Input:\n"
<< std::setw(d_wid) << "decimal"
<< std::setw(b_wid) << "binary" << '\n'
<< std::setw(d_wid) << test
<< std::setw(b_wid) << bin(test)
<< "\n\n";

extract(test, values);

std::vector<unsigned long>::const_iterator it(values.begin());
std::vector<unsigned long>::const_iterator en(values.end());

std::cout << "Output:\n"
<< std::setw(d_wid) << "decimal"
<< std::setw(b_wid) << "binary" << '\n';

while(it != en)
{
std::cout << std::setw(d_wid) << *it
<< std::setw(b_wid) << bin(*it)
<< " (2 ^ " << which_pwr(*it) << ')'
<< '\n';

++it;
}

std::cout << "\n\n";

}

return 0;
}

Excerpt from output:
================================================== ======
Input:
decimal binary
330382094 10011101100010011101100001110

Bit 31 is not set
Bit 30 is not set
Bit 29 is not set
Bit 28 is set
Bit 27 is not set
Bit 26 is not set
Bit 25 is set
Bit 24 is set
Bit 23 is set
Bit 22 is not set
Bit 21 is set
Bit 20 is set
Bit 19 is not set
Bit 18 is not set
Bit 17 is not set
Bit 16 is set
Bit 15 is not set
Bit 14 is not set
Bit 13 is set
Bit 12 is set
Bit 11 is set
Bit 10 is not set
Bit 9 is set
Bit 8 is set
Bit 7 is not set
Bit 6 is not set
Bit 5 is not set
Bit 4 is not set
Bit 3 is set
Bit 2 is set
Bit 1 is set
Bit 0 is not set

Output:
decimal binary
268435456 10000000000000000000000000000 (2 ^ 28)
33554432 10000000000000000000000000 (2 ^ 25)
16777216 1000000000000000000000000 (2 ^ 24)
8388608 100000000000000000000000 (2 ^ 23)
2097152 1000000000000000000000 (2 ^ 21)
1048576 100000000000000000000 (2 ^ 20)
65536 10000000000000000 (2 ^ 16)
8192 10000000000000 (2 ^ 13)
4096 1000000000000 (2 ^ 12)
2048 100000000000 (2 ^ 11)
512 1000000000 (2 ^ 9)
256 100000000 (2 ^ 8)
8 1000 (2 ^ 3)
4 100 (2 ^ 2)
2 10 (2 ^ 1)
Input:
decimal binary
330382095 10011101100010011101100001111

Bit 31 is not set
Bit 30 is not set
Bit 29 is not set
Bit 28 is set
Bit 27 is not set
Bit 26 is not set
Bit 25 is set
Bit 24 is set
Bit 23 is set
Bit 22 is not set
Bit 21 is set
Bit 20 is set
Bit 19 is not set
Bit 18 is not set
Bit 17 is not set
Bit 16 is set
Bit 15 is not set
Bit 14 is not set
Bit 13 is set
Bit 12 is set
Bit 11 is set
Bit 10 is not set
Bit 9 is set
Bit 8 is set
Bit 7 is not set
Bit 6 is not set
Bit 5 is not set
Bit 4 is not set
Bit 3 is set
Bit 2 is set
Bit 1 is set
Bit 0 is set

Output:
decimal binary
268435456 10000000000000000000000000000 (2 ^ 28)
33554432 10000000000000000000000000 (2 ^ 25)
16777216 1000000000000000000000000 (2 ^ 24)
8388608 100000000000000000000000 (2 ^ 23)
2097152 1000000000000000000000 (2 ^ 21)
1048576 100000000000000000000 (2 ^ 20)
65536 10000000000000000 (2 ^ 16)
8192 10000000000000 (2 ^ 13)
4096 1000000000000 (2 ^ 12)
2048 100000000000 (2 ^ 11)
512 1000000000 (2 ^ 9)
256 100000000 (2 ^ 8)
8 1000 (2 ^ 3)
4 100 (2 ^ 2)
2 10 (2 ^ 1)
1 1 (2 ^ 0)
Input:
decimal binary
330382096 10011101100010011101100010000

Bit 31 is not set
Bit 30 is not set
Bit 29 is not set
Bit 28 is set
Bit 27 is not set
Bit 26 is not set
Bit 25 is set
Bit 24 is set
Bit 23 is set
Bit 22 is not set
Bit 21 is set
Bit 20 is set
Bit 19 is not set
Bit 18 is not set
Bit 17 is not set
Bit 16 is set
Bit 15 is not set
Bit 14 is not set
Bit 13 is set
Bit 12 is set
Bit 11 is set
Bit 10 is not set
Bit 9 is set
Bit 8 is set
Bit 7 is not set
Bit 6 is not set
Bit 5 is not set
Bit 4 is set
Bit 3 is not set
Bit 2 is not set
Bit 1 is not set
Bit 0 is not set

Output:
decimal binary
268435456 10000000000000000000000000000 (2 ^ 28)
33554432 10000000000000000000000000 (2 ^ 25)
16777216 1000000000000000000000000 (2 ^ 24)
8388608 100000000000000000000000 (2 ^ 23)
2097152 1000000000000000000000 (2 ^ 21)
1048576 100000000000000000000 (2 ^ 20)
65536 10000000000000000 (2 ^ 16)
8192 10000000000000 (2 ^ 13)
4096 1000000000000 (2 ^ 12)
2048 100000000000 (2 ^ 11)
512 1000000000 (2 ^ 9)
256 100000000 (2 ^ 8)
16 10000 (2 ^ 4)
================================================== ======

HTH,
-Mike
Jul 22 '05 #5

"Mike Wahler" <mk******@mkwahler.net> wrote in message
news:iK******************@newsread1.news.pas.earth link.net...
"William Payne" <mi**************@student.liu.se> wrote in message
news:cg**********@news.island.liu.se...
Hello, I have a variable of type unsigned long. It has a number of bits

set
(with set I mean they equal one). I need to determine those bits and
their
position and create new numbers from them. For example, consider this
four-bit number:
1100
from this number I want to extract two numbers:
1000 and 100
had the four-bit number been 0101 I would want to extract 100 and 1.

How should I do this? I wish I had some code to post but I don't right
now
=/

These new numbers I will use to look-up strings in a map.

/ WP


#include <iomanip>
#include <ios>
#include <iostream>
#include <limits>
#include <string>
#include <vector>

unsigned long pwr(unsigned long value, unsigned int exp)
{
unsigned long result(1);

while(exp--)
result *= value;

return result;
}

std::string bin(unsigned long value)
{
std::string result;
while(value)
{
result.insert(result.begin(), 1, char(value % 2 + '0'));
value /= 2;
}

return result;

}

void extract(unsigned long value, std::vector<unsigned long>& results)
{
results.clear();

unsigned int bit(std::numeric_limits<unsigned long>::digits - 1);

unsigned long
component(pwr(2, std::numeric_limits<unsigned long>::digits - 1));

do
{
std::cout << "Bit " << std::setw(2) << bit << " is";

if(value & component)
results.push_back(component);
else
std::cout << " not";

std::cout << " set\n";

--bit;

} while(component /= 2);

std::cout << '\n';
}

unsigned int which_pwr(unsigned long value)
{
unsigned int result(0);

while(value /= 2)
++result;

return result;
}

int main()
{
std::streamsize b_wid(std::numeric_limits<unsigned long>::digits + 1);
std::streamsize d_wid(std::numeric_limits<unsigned long>::digits10 +
2);
double lim(std::numeric_limits<unsigned long>::max());
double val(0);

unsigned long test(0);
std::vector<unsigned long> values;

for(val = 0; val <= lim; ++val)
{
test = unsigned long(val);

std::cout << "Input:\n"
<< std::setw(d_wid) << "decimal"
<< std::setw(b_wid) << "binary" << '\n'
<< std::setw(d_wid) << test
<< std::setw(b_wid) << bin(test)
<< "\n\n";

extract(test, values);

std::vector<unsigned long>::const_iterator it(values.begin());
std::vector<unsigned long>::const_iterator en(values.end());

std::cout << "Output:\n"
<< std::setw(d_wid) << "decimal"
<< std::setw(b_wid) << "binary" << '\n';

while(it != en)
{
std::cout << std::setw(d_wid) << *it
<< std::setw(b_wid) << bin(*it)
<< " (2 ^ " << which_pwr(*it) << ')'
<< '\n';

++it;
}

std::cout << "\n\n";

}

return 0;
}

Excerpt from output:
================================================== ======
Input:
decimal binary
330382094 10011101100010011101100001110

Bit 31 is not set
Bit 30 is not set
Bit 29 is not set
Bit 28 is set
Bit 27 is not set
Bit 26 is not set
Bit 25 is set
Bit 24 is set
Bit 23 is set
Bit 22 is not set
Bit 21 is set
Bit 20 is set
Bit 19 is not set
Bit 18 is not set
Bit 17 is not set
Bit 16 is set
Bit 15 is not set
Bit 14 is not set
Bit 13 is set
Bit 12 is set
Bit 11 is set
Bit 10 is not set
Bit 9 is set
Bit 8 is set
Bit 7 is not set
Bit 6 is not set
Bit 5 is not set
Bit 4 is not set
Bit 3 is set
Bit 2 is set
Bit 1 is set
Bit 0 is not set

Output:
decimal binary
268435456 10000000000000000000000000000 (2 ^ 28)
33554432 10000000000000000000000000 (2 ^ 25)
16777216 1000000000000000000000000 (2 ^ 24)
8388608 100000000000000000000000 (2 ^ 23)
2097152 1000000000000000000000 (2 ^ 21)
1048576 100000000000000000000 (2 ^ 20)
65536 10000000000000000 (2 ^ 16)
8192 10000000000000 (2 ^ 13)
4096 1000000000000 (2 ^ 12)
2048 100000000000 (2 ^ 11)
512 1000000000 (2 ^ 9)
256 100000000 (2 ^ 8)
8 1000 (2 ^ 3)
4 100 (2 ^ 2)
2 10 (2 ^ 1)
Input:
decimal binary
330382095 10011101100010011101100001111

Bit 31 is not set
Bit 30 is not set
Bit 29 is not set
Bit 28 is set
Bit 27 is not set
Bit 26 is not set
Bit 25 is set
Bit 24 is set
Bit 23 is set
Bit 22 is not set
Bit 21 is set
Bit 20 is set
Bit 19 is not set
Bit 18 is not set
Bit 17 is not set
Bit 16 is set
Bit 15 is not set
Bit 14 is not set
Bit 13 is set
Bit 12 is set
Bit 11 is set
Bit 10 is not set
Bit 9 is set
Bit 8 is set
Bit 7 is not set
Bit 6 is not set
Bit 5 is not set
Bit 4 is not set
Bit 3 is set
Bit 2 is set
Bit 1 is set
Bit 0 is set

Output:
decimal binary
268435456 10000000000000000000000000000 (2 ^ 28)
33554432 10000000000000000000000000 (2 ^ 25)
16777216 1000000000000000000000000 (2 ^ 24)
8388608 100000000000000000000000 (2 ^ 23)
2097152 1000000000000000000000 (2 ^ 21)
1048576 100000000000000000000 (2 ^ 20)
65536 10000000000000000 (2 ^ 16)
8192 10000000000000 (2 ^ 13)
4096 1000000000000 (2 ^ 12)
2048 100000000000 (2 ^ 11)
512 1000000000 (2 ^ 9)
256 100000000 (2 ^ 8)
8 1000 (2 ^ 3)
4 100 (2 ^ 2)
2 10 (2 ^ 1)
1 1 (2 ^ 0)
Input:
decimal binary
330382096 10011101100010011101100010000

Bit 31 is not set
Bit 30 is not set
Bit 29 is not set
Bit 28 is set
Bit 27 is not set
Bit 26 is not set
Bit 25 is set
Bit 24 is set
Bit 23 is set
Bit 22 is not set
Bit 21 is set
Bit 20 is set
Bit 19 is not set
Bit 18 is not set
Bit 17 is not set
Bit 16 is set
Bit 15 is not set
Bit 14 is not set
Bit 13 is set
Bit 12 is set
Bit 11 is set
Bit 10 is not set
Bit 9 is set
Bit 8 is set
Bit 7 is not set
Bit 6 is not set
Bit 5 is not set
Bit 4 is set
Bit 3 is not set
Bit 2 is not set
Bit 1 is not set
Bit 0 is not set

Output:
decimal binary
268435456 10000000000000000000000000000 (2 ^ 28)
33554432 10000000000000000000000000 (2 ^ 25)
16777216 1000000000000000000000000 (2 ^ 24)
8388608 100000000000000000000000 (2 ^ 23)
2097152 1000000000000000000000 (2 ^ 21)
1048576 100000000000000000000 (2 ^ 20)
65536 10000000000000000 (2 ^ 16)
8192 10000000000000 (2 ^ 13)
4096 1000000000000 (2 ^ 12)
2048 100000000000 (2 ^ 11)
512 1000000000 (2 ^ 9)
256 100000000 (2 ^ 8)
16 10000 (2 ^ 4)
================================================== ======

HTH,
-Mike


Hehe, yeah, that helps! I already had a crude but working version but it's
nice to see someone putting alot of effort into helping a complete stranger!

/ WP
Jul 22 '05 #6
"William Payne" <mi**************@student.liu.se> wrote:
Hello, I have a variable of type unsigned long. It has a number of bits set
(with set I mean they equal one). I need to determine those bits and their
position and create new numbers from them. For example, consider this
four-bit number:
1100
from this number I want to extract two numbers:
1000 and 100
had the four-bit number been 0101 I would want to extract 100 and 1.


while (x)
{
unsigned long next = x - (x & (x-1));
foo(next);
x &= ~next;
}
Jul 22 '05 #7
William Payne wrote:
Hello, I have a variable of type unsigned long. It has a number of bits set
(with set I mean they equal one). I need to determine those bits and their
position and create new numbers from them. For example, consider this
four-bit number:
1100
from this number I want to extract two numbers:
1000 and 100
had the four-bit number been 0101 I would want to extract 100 and 1.

How should I do this? I wish I had some code to post but I don't right now
=/

These new numbers I will use to look-up strings in a map.

/ WP


The solutions that I've seen posted so far are all O(N) in the number of
bits in an unsigned long. That stinks.

Here's a pair of skeleton solutions that's linear in the number of SET
bits instead of the total number of bits. Use whichever you prefer.

void generate_set_bits_1(unsigned long val) {
while (val) {
unsigned mask = val & (val - 1);
unsigned result = mask ^ val;
cout << result << endl;
val = mask;
}
}

void generate_set_bits_2(unsigned long val) {
while (val) {
cout << ((1 + (val ^ (val - 1))) >> 1) << endl;
val = val & (val - 1);
}
}

-Peter
Jul 22 '05 #8

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

3
by: Anthony Liu | last post by:
I want to use the set function like mylist = myset = set (mylist) But I don't know what to import, I tried sys, sets, they don't work. What's the easy way to find out the module that...
3
by: Skip Montanaro | last post by:
I use sets a lot in my Python 2.3 code at work and have been using this hideous import to make the future move to 2.4's set type transparent: try: x = set except NameError: from sets import...
7
by: deko | last post by:
I'm getting intermittent "Object Invalid or No Longer Set" errors in my Access 2002 mdb. What causes these errors? Has anyone dealt with this before? I can't trace it because it's not easy...
9
by: Anders Borum | last post by:
Hello! I have a class that needs to validate the input value, when a programmer changes a specific property on a class. The input should only accept the following pattern {1,n} (alpha-numeric...
1
by: Gregor Horvath | last post by:
Hi, I searched the web and docs but cannot figure out whats wrong with this code: #!/usr/bin/python import Tkinter as Tk class testtk(Tk.Frame):
9
by: axs221 | last post by:
I am trying to move some of our large VBA Access front-end file into ActiveX DLL files. I created two DLL files so far, one was a module that contains code to integrate into the QuickBooks...
8
by: shira | last post by:
I have done a fair bit of searching, but haven't yet been able to find an explanation as to why one would set "ignore nulls" to "yes" when creating an index. I understand what it does (I think),...
1
by: =?Utf-8?B?ai5hLiBoYXJyaW1hbg==?= | last post by:
Hi, I've looked at a number of examples in the MSXML6 help, but haven't been able to find exactly what I'm looking for. I have the following loaded into a "IXMLDOMDocument2" object. I have a...
7
by: Jan | last post by:
Hi: I was so sure this was easy that I left it for the last minute and now I'm stuck. I'm working on the student directory for my kids' school and since it will be printed on 3-hole punch...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...
0
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...
0
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.