Definition of built in redundancy - entropy

Assume that we have 3 bit ascii representation. How can I get the built in redundancy of that representation? I searched internet for days. But still couldn't find something relevant. It will be grate if someone can explain me what is "built in redundancy" means as well.
Thank you.

As far as I know, redundancy is the difference between the number of bits used to transmit a message and the entropy of the message.

Related

Do computer/cpu really understand(binary)?

I have read and heard from many people,books, sites computer understand nothing but only binary!But they dont tell how computer/cpu understand binary.So I was thinking how can computer/cpu can understand?Cause as of my little knowledge and thinking, to think or understand something one must need a brain and off-course a life but cpu lack both.
*Additionally as cpu run by electricity, so my guess is cpu understand nothing,not even binary rather there are some natural rules for electricity or something like that and we human*(or who invented computer) found it(may be if we flow current in a certain combination or in certain number of circuits we get a row light or like so, who know!) and also a way to manipulate the current flow/straight light to make with it, what we need i.e different letters(with straight three light or magnetic wave occurred from the electricity with the help of manipulation we can have letter 'A') means computer/cpu dont understanad anything.
Its just my wild guess. I hope someone could help me to have a clear idea about if cpu really understand anything(binary)?And if, then how. Anyone detailed answer,article or book would be great.Thanks in advance.
From HashNode article "How does a computer machine understand 0s and 1s?"
A computer doesn't actually "understand" anything. It merely provides you with a way of information flow — input to output. The decisions to transform a given set of inputs to an output (computations) are made using boolean expressions (expressed using specific arrangements of logic gates).
At the hardware level we have bunch of elements called transistors (modern computers have billions of them and we are soon heading towards an era where they would become obsolete). These transistors are basically switching devices. Turning ON and OFF based on supply of voltage given to its input terminal. If you translate the presence of voltage at the input of the transistor as 1 and absence of voltage as 0 (you can do it other way too). There!! You have the digital language.
"understand" no. Computers don't understand anything, they're just machines that operate according to fixed rules for moving from one state to another.
But all these states are encoded in binary.
So if you anthropomorphise the logical (architectural) or physical (out-of-order execution, etc. etc.) operation of a computer, you might use the word "understand" as a metaphor for "process" / "operate in".
Taking this metaphor to the extreme, one toy architecture is called the Little Man Computer, LMC, named for the conceit / joke idea that there is a little man inside the vastly simplified CPU actually doing the binary operations.
The LMC model is based on the concept of a little man shut in a closed mail room (analogous to a computer in this scenario). At one end of the room, there are 100 mailboxes (memory), numbered 0 to 99, that can each contain a 3 digit instruction or data (ranging from 000 to 999).
So actually, LMC is based around a CPU that "understands" decimal, unlike a normal computer.
The LMC toy architecture is terrible to program for except for the very simplest of programs. It doesn't support left/right bit-shifts or bitwise binary operations, which makes sense because it's based on decimal not binary. (You can of course double a number = left shift by adding to itself, but right shift needs other tricks.)

Integer Addition on current generation CPUs (2017)

First of, this is a genuine question and not poking fun at anyone. I am trying to learn C++ after many years of not touching it and I found a very old article (last updated July, 96) while trying to remember how implement BCD addition. Even though the article is old, looking at the person who wrote it is a professor, I am in a wtf state after reading the first few lines. I am learning and don't want to disregard something so easily, so please excuse my naivety.
The BCD system was chosen for the internal number system in these
machines because it is easy to convert it to alphanumeric
representations for printouts and displays. The compelling advantages
of BCD have waned over time, and these digits are supported by more
modern hardware simply to provide backward compatibility with earlier
generations of machines.
Is the above statement true ??? !!! If yes, can someone explain how the modern CPUs perform addition if not using Binary ??? Or is the author trying to say something else and I misunderstood. I am concerned that maybe author might be hinting at something at the hardware level that might be different than the software abstraction. Or it might be some sort of translation issue.
I don't see any purpose solved by processors giving an outer appearance of being binary ("for backward compatibility") when internally they are decimal and don't need BCD system.

How does VirtualBox CALCULATE how many virtual CPUs are available?

I've tried to get an answer to this question in VB IRC channel, I've looked around stackexchange, stackoverflow, superuser, and elsewhere. Answers come close, but not what I am wanting to know.
This is a curiosity question only, not one of necessity. I just want to know how things work. It has nothing to do with any bug, enhancement request, or security issue. If you feel this forum is not the place to get an answer to this, please refer me to the proper venue. Thanks. (Although it is hard for anyone to imagine that VBox's own forum could be the wrong place, I did not see an answer to my specific question or a place to post to an appropriate category.) Whatever happens, please don't close my question without at least pointing to a better resource (I hate when that happens!). Thanks again.
Now, the question: How does virtualbox's host driver calculate the total number of virtual CPU's to provide?
(Please note I will not respond to answers from people who did not really read the question, or at least first ask for more clarification. I think this is a VERY straight-forward question.)
Let me break the question down so as to be as precise and concise as possible as to what I am really asking. I am curious to know how the VirtualBox HOST software (whatever portion that may be) determines how many VIRTUAL CPUs appear on the configuration interface where the user selects how many VCPUs they would like to apply to a specfiic VM.
What I am NOT asking: I am NOT asking about the miracle of virtualization hardware, etc., in general; I understand multiple cores and multiple threading, VTx, etc. I am NOT asking how many I should use for a specfic VM or application. I am NOT asking for help in configuring any specific VM in my question. I am NOT asking anyone to ask ME why I need to know -- I told you already; I am merely curious. If my specific question does not interest you, that's fine. Again, this is just a simple, straight-forward question: How does VBox arrive at the number?
What I already know: It is true that, at least generally, the answer is 2x as many as physical CPUs; OK, if so, why 2x and not 3x or some other multiplier? (I know fractional amounts won't work for odd-number of cores or threads; I am just being as general as I can be.) For instance, on my Phenom II X6, VirtualBox presents me with up to 12 VCPUs. If the answer is the threads, well, that can't be since my particular Thuban does not have threads (some Thubans do, some don't). What my Thuban DOES have, though, is hypertransport, but not hyperthreading. Likewise, my old Phenom II X2 will allow 4 VCPU's in Virtualbox.
I have already read the numerous responses on the sites mentioned above admonishing users NOT to use more than one VCPU per VM because it adds overhead (for one thing, you must run the IOAPIC, which introduces a performance hit). I've also read posts where the question sounds like mine, but they do not ultimately give an answer to this.
Is the answer some kind of sigma sum or logarithmic formula? Is it complex enough to exceed this forum's formatting capabilities? Hard to imagine why it is so difficult to get an answer to this, which I figure would have been asked and answered many times over. I really want to know why it seems to be 2x usually; why that is the "magic" number. If I read the source code (assuming this is available), will the comments explain why?
I will really appreciate and admire the soul(s) who read and answer this question, and not some other question not being asked. I also hope you will not redirect me to the dark and hostile channels of IRC; there are some very sociopathic entities on IRC whose remarks remind me of some of the unsubs on Criminal Minds. Note that I said "some" -- there are helpful people there also. Not meaning to antagonize; I just hate going to IRC anymore. If you know of a specfic helpful nick on IRC with this, I'd appreciate that also.
BTW, I have been googling for answers to this and other questions and reading SO, SE, and SU boards and I see where some people respond with answers that are totally irrelevant. That's the reason for what may sound like a harsh tone by me. This is my first post, and I hope the response will be more positive than a few of my experiences on IRC.
It seems you are asking "How does the VirtualBox GUI calculate the available range for the Processor(s) slider under the System settings?"
Because VirtualBox is open source (and very clean, well written source) it isn't too hard to dig into the code and research out the answer. Digging down into the /src/VBox/Frontends/VirtualBox/src/settings/machine folder you can see all the UI* files that comprise the settings UI elements. The specific file that will have your answer is UIMachineSettingsSystem.cpp. Starting on about line 45 (as of revision 43459), you can see the following code:
/* Setup constants */
CSystemProperties properties = vboxGlobal().virtualBox().GetSystemProperties();
uint hostCPUs = vboxGlobal().host().GetProcessorCount();
mMinGuestCPU = properties.GetMinGuestCPUCount();
mMaxGuestCPU = RT_MIN (2 * hostCPUs, properties.GetMaxGuestCPUCount());
The mMinGuestCPU variable and associated GetMinGuestCPUCount() method (and mMaxGuestCPU / GetMaxGuestCPUCount()) should be relatively straightforward - typically it will be 1 for the min and the max will be the number of physical/logical cores available on the host.
Thus, to answer your question - the scale for the slider is typically 1 through two times the number of cores available. I would strongly encourage you to download the source code and dig into the methods that calculate those numbers and see for yourself how they are calculated and the nuances that are involved. Specifically the vboxGlobal().host().GetProcessorCount() method.

What is the relation between 32bit CRC and the data word size?

if we take 32-bit CRC then the data word size will be 2 to the power of 32(2**32) plus 32 bit for CRC.... or not? Am I missing something?
If I want to write a code in Microsoft Visual C++ for implementing 32-bit CRC then what is the data type I can use? Maybe I am missing the point and talking rubbish.
Basically it is my assignment to implement 32-bit CRC and I am completely at a loss how to go about it.
Sorry if the question is vague. Any help toward implementation, logic, or basic fundamentals will be greatly appreciated.
CRC-32 is basically the act of dividing two polynomials and returning the remainder.
Recommended introductory reading:
http://en.wikipedia.org/wiki/Cyclic_redundancy_check
http://www.mathpages.com/home/kmath458.htm
http://www.ross.net/crc/download/crc_v3.txt

Virus Signatures and Genetic Algorithms

I would like to know how one achieves the following signature. I have read online that (al least in the past) researchers will take the "suspected" file the binary code, convert it to assembly, examine it, pick sections of code that appear to be unusual, and identifying the corresponding bytes in the machine code.
But then how is the bellow virus string signature achieved?
MIRC.Julie=6463632073656e6420246e69636b20433a5c57696e646f77735c4a756c696531362c4a50472e636f6d0a0d6e31333d207d0a0d6e31343d200a0d6e31353d206374637020313a70696e673a2f6463632073656e6420246e69636b20433a5c57696e646f77735c4a756c696531362c4a50
Also, (although this might sound completely crazy) that string above must mean something, i can only guess a sequence of actions, actual code, etc. So if it was once "translated" in this form (virus signature) from assembly, is it possible to convert it back?
Just in case you might wonder why am asking what even I think is a weird question. This is why... I am preparing my BSc final year computer science project, and at this point I am wondering whether it would be possible to maybe generate/estimate/evaluate/predict virus signatures by using GA's (Genetic Algorithms). Maybe that will help make my question a bit easier to understand, I hope.
Thanks!
You cannot revert it back because normally virus signatures are encrypted. The way they are obtained is by extracting the binary mallicious code from an executable and then converting it to hexadecimal representation.
Hopefully helps
The virus signature shown is probably dependent on the scanner that generated it. I find it extremely easy to believe that all virus scanners create their signatures in different ways. Without a source, there's no way to explain how it was developed, and even with a source I doubt this is something that AV companies will reveal, since it allows virus developers the opportunity to avoid detection.
"Generate/estimate/evaluate/predict" are four different problems and not all of them are best done with a GA. You need to select your problem before selecting an algorithm.

Resources