Representation of numbers: Why octal and hex if it's all binary Range of numbers vs number of bits Signed, unsigned & two's complement Does Java have signed and unsigned? Shifting of integers Shifting for division and multiplication of powers of 2 Boolean algebra Is it what we do in Discrete Math? (or Abstract Algebra?) Why exclusive-or C operators ! vs ~, || vs |, && vs & casting -- signed <-> unsigned, to different ranges overflow or what happens when the result is out-of-range? how do the unsigned and signed operations differ? (they really don't) Why is memory addressed in bytes? **************** In the two lectures I was confused about how Twos Complement works and am a bit confused with casting. I was also confused about the difference between signed and unsigned in terms of how there represented. The confusion about unsigned vs signed, I believe, lead to the confusion in the section dealing with unsigned multiplication. 1. 2's Complement 2. Sign extension 3. Signed and Unsigned Multiplication 4. Power of 2 division In the first Bits,Bytes, and Integers lecture, around the 6:07 time frame, I became confused with his explaination for the different values of the C data types and how they changed depending on the machine being used. Why is this the case? What are the main differences between the 32-bit, 64-bit, and the x86-64 machines? I may need to see more examples about how unsigned addition works exactly. I was never taught any of binary math, so all of the information here is new to me and its pretty confusing. The process of shifting in mathematical expressions and binary Byte-Oriented Memory Organization I am confused by: How does boolean algebra work? Do computers use Hex and Decimals internally or is that for the users' sake? How do conversion unsigned and their complements work? Also, I am lost on unsigned addition, but I am going to rewatch and do some reading on it. Csci-235 Hw3: **************** 1. How does the expression p && *p avoid null pointer access? 2. Do you not count the last bit when doing unsigned arithmetic because your doing modular arithmetic? 3. How does negative overflow work with unsigned bits? 4. How does sign extension make a number bigger without changing its bit representation? One rather new idea that came up during this lecture that I would have liked to have seen more in depth was the idea of converting binary to hexadecimal equivalents and vice versa. I know and understand the ranges of hexadecimal and binary respectively. However, implementing the two simultaneously in practice is something that I have never done before and need more examples and explanations Another idea that I would like to see more in depth is the idea of using set intersection, set union, and symmetric difference. I have been introduced this in discrete math, but its practical application in programming is something I am not experienced with and would like to get more in depth about. Another confusing thing that came up with the lecture was the concept of the exclusive or. I have never worked with the exclusive or before, and it became somewhat confusing when he implemented it into the binary arithmetic. The last thing that I would like to see a bit more in-depth are the two cases of a right shift. I understand the left shift, and how left shift replaces with zeros so that it doesn’t change the initial value, but I would like to see more practical applications and in-depth analysis of the right shift. His description of slide number seven on the ways that different machines handle different data types differently The discussion of shift operations on slide 14 His discussion of numeric ranges on slide 18 I still find the conversion of signed ints to unsigned ints confusing List of the four more confusing things in the lectures: 1. When talking about shift operations (around slide 14), there is an aside where he explains that on different machines a left bit shift of 8 is handled differently. (all 0's on some machines and no effect on others?) 2. During the discussion of signed and unsigned, why would we arrive at a situation where we are writing a program which presents a mixture of signed and unsigned within the same expression. (slide 28) 3. The video lists a few reasons to be cautious of using unsigned or mixing them in with your signed - but when is it better to use unsigned than signed? 4. Truncation of signed at the end of the lecture. I still do not really understand exclusive or, how is it different from regular or? So overall the difference between || and | or && and & is that the doubles have short circuiting? Why would you ever want to use unsigned addition? It seems solely as a cause for logical errors but Randy makes it sound like it can be used for other things. I cannot tell if I missed something but how can you tell if a binary number is negative? Encoding Byte Values, Casting, 2's Compliment Addition, show_bytes